diff options
author | Constantin Shalnev <c.shalnev@corp.mail.ru> | 2015-03-20 14:01:00 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 02:41:24 +0300 |
commit | f7203eb9b75a01270d63e74e8eccebdf531c5742 (patch) | |
tree | 7b7a8ad4e92f21f9feee06548f2d134c5df93465 /qt/draw_widget.cpp | |
parent | c427ac965987265c62761de2f822fd90be606e1a (diff) |
implemented ChangeColorScheme functionality and its test for supported platforms
Diffstat (limited to 'qt/draw_widget.cpp')
-rw-r--r-- | qt/draw_widget.cpp | 85 |
1 files changed, 55 insertions, 30 deletions
diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 3518dad4bb..7962f46ef3 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -246,45 +246,51 @@ namespace qt #ifndef USE_DRAPE m_videoTimer.reset(CreateVideoTimer()); - shared_ptr<qt::gl::RenderContext> primaryRC(new qt::gl::RenderContext(this)); + InitRenderPolicy(); +#endif - graphics::ResourceManager::Params rmParams; - rmParams.m_texFormat = graphics::Data8Bpp; - rmParams.m_texRtFormat = graphics::Data4Bpp; - rmParams.m_videoMemoryLimit = GetPlatform().VideoMemoryLimit(); + m_isInitialized = true; + } + } - RenderPolicy::Params rpParams; + void DrawWidget::InitRenderPolicy() + { +#ifndef USE_DRAPE + shared_ptr<qt::gl::RenderContext> primaryRC(new qt::gl::RenderContext(this)); + graphics::ResourceManager::Params rmParams; + rmParams.m_texFormat = graphics::Data8Bpp; + rmParams.m_texRtFormat = graphics::Data4Bpp; + rmParams.m_videoMemoryLimit = GetPlatform().VideoMemoryLimit(); - QRect const & geometry = QApplication::desktop()->geometry(); - rpParams.m_screenWidth = L2D(geometry.width()); - rpParams.m_screenHeight = L2D(geometry.height()); + RenderPolicy::Params rpParams; - if (m_ratio >= 1.5 || QApplication::desktop()->physicalDpiX() >= 180) - rpParams.m_density = graphics::EDensityXHDPI; - else - rpParams.m_density = graphics::EDensityMDPI; + QRect const & geometry = QApplication::desktop()->geometry(); + rpParams.m_screenWidth = L2D(geometry.width()); + rpParams.m_screenHeight = L2D(geometry.height()); - rpParams.m_videoTimer = m_videoTimer.get(); - rpParams.m_useDefaultFB = true; - rpParams.m_rmParams = rmParams; - rpParams.m_primaryRC = primaryRC; - rpParams.m_skinName = "basic.skn"; + if (m_ratio >= 1.5 || QApplication::desktop()->physicalDpiX() >= 180) + rpParams.m_density = graphics::EDensityXHDPI; + else + rpParams.m_density = graphics::EDensityMDPI; - try - { - m_framework->SetRenderPolicy(CreateRenderPolicy(rpParams)); - m_framework->InitGuiSubsystem(); - } - catch (graphics::gl::platform_unsupported const & e) - { - LOG(LERROR, ("OpenGL platform is unsupported, reason: ", e.what())); - /// @todo Show "Please Update Drivers" dialog and close the program. - } -#endif // USE_DRAPE + rpParams.m_videoTimer = m_videoTimer.get(); + rpParams.m_useDefaultFB = true; + rpParams.m_rmParams = rmParams; + rpParams.m_primaryRC = primaryRC; + rpParams.m_skinName = "basic.skn"; - m_isInitialized = true; + try + { + m_framework->SetRenderPolicy(CreateRenderPolicy(rpParams)); + m_framework->InitGuiSubsystem(); } + catch (graphics::gl::platform_unsupported const & e) + { + LOG(LERROR, ("OpenGL platform is unsupported, reason: ", e.what())); + /// @todo Show "Please Update Drivers" dialog and close the program. + } +#endif // USE_DRAPE } void DrawWidget::resizeGL(int w, int h) @@ -664,4 +670,23 @@ namespace qt { m_framework->XorQueryMaxScaleMode(); } + + void DrawWidget::SetMapStyle(MapStyle mapStyle) + { +#ifndef USE_DRAPE + if (m_framework->GetMapStyle() == mapStyle) + return; + + makeCurrent(); + + m_framework->SetRenderPolicy(nullptr); + + m_framework->SetMapStyle(mapStyle); + + // init new render policy + InitRenderPolicy(); + + m_framework->SetUpdatesEnabled(true); +#endif + } } |