diff options
92 files changed, 2926 insertions, 3771 deletions
diff --git a/android/build.gradle b/android/build.gradle index 092624c03d..1cbaa9e5fb 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -256,7 +256,7 @@ android { // We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk aaptOptions { - noCompress 'txt', 'bin', 'skn', 'html', 'png', 'json', 'mwm', 'ttf' + noCompress 'txt', 'bin', 'skn', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf' ignoreAssetsPattern "!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~" } diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 67ec496d72..5a15218cb7 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -13,7 +13,7 @@ endif # List all static libraries which are built using our own scripts in tools/android # #################################################################################### -MY_PREBUILT_LIBS_PATH := ../../../omim-android-$(OMIM_CONFIG)-$(TARGET_ARCH_ABI)/out/$(OMIM_CONFIG) +MY_PREBUILT_LIBS_PATH := ../../../omim-android-drape-$(OMIM_CONFIG)-$(TARGET_ARCH_ABI)/out/$(OMIM_CONFIG) # Avoid clean errors due to missing external static libs ifneq ($(MAKECMDGOALS),clean) @@ -25,7 +25,7 @@ define add_prebuild_static_lib include $(PREBUILT_STATIC_LIBRARY) endef -prebuild_static_libs := osrm protobuf tomcrypt jansson minizip fribidi freetype expat base coding geometry anim platform graphics indexer storage search routing gui render map stats_client succinct opening_hours +prebuild_static_libs := osrm protobuf tomcrypt jansson minizip fribidi freetype expat base coding geometry anim platform drape indexer storage search routing drape_frontend map stats_client succinct opening_hours $(foreach item,$(prebuild_static_libs),$(eval $(call add_prebuild_static_lib,$(item)))) @@ -60,21 +60,17 @@ LOCAL_HEADER_FILES := \ ../../private.h \ com/mapswithme/core/jni_helper.hpp \ com/mapswithme/core/logging.hpp \ - com/mapswithme/core/render_context.hpp \ com/mapswithme/maps/Framework.hpp \ com/mapswithme/maps/MapStorage.hpp \ com/mapswithme/platform/Platform.hpp \ com/mapswithme/platform/http_thread_android.hpp \ - nv_thread/nv_thread.hpp \ - nv_event/nv_event_queue.hpp \ - nv_event/nv_event.hpp \ - nv_event/nv_keycode_mapping.hpp \ - nv_event/scoped_profiler.hpp + com/mapswithme/opengl/android_gl_utils.hpp \ + com/mapswithme/opengl/androidoglcontext.hpp \ + com/mapswithme/opengl/androidoglcontextfactory.hpp \ LOCAL_SRC_FILES := \ com/mapswithme/core/jni_helper.cpp \ com/mapswithme/core/logging.cpp \ - com/mapswithme/core/render_context.cpp \ com/mapswithme/country/country_helper.cpp \ com/mapswithme/country/CountryTree.cpp \ com/mapswithme/country/ActiveCountryTree.cpp \ @@ -83,10 +79,9 @@ LOCAL_SRC_FILES := \ com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp \ com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp \ com/mapswithme/maps/sound/tts.cpp \ - com/mapswithme/maps/VideoTimer.cpp \ com/mapswithme/maps/MapFragment.cpp \ - com/mapswithme/maps/MwmApplication.cpp \ - com/mapswithme/maps/Lifecycle.cpp \ + com/mapswithme/maps/RenderActivity.cpp \ + com/mapswithme/maps/MWMApplication.cpp \ com/mapswithme/maps/LocationState.cpp \ com/mapswithme/maps/MapStorage.cpp \ com/mapswithme/maps/DownloadResourcesActivity.cpp \ @@ -98,14 +93,12 @@ LOCAL_SRC_FILES := \ com/mapswithme/platform/HttpThread.cpp \ com/mapswithme/platform/Language.cpp \ com/mapswithme/platform/PThreadImpl.cpp \ - com/mapswithme/util/StringUtils.cpp \ - com/mapswithme/util/Config.cpp \ - nv_thread/nv_thread.cpp \ - nv_event/nv_event_queue.cpp \ - nv_event/nv_event.cpp \ - nv_time/nv_time.cpp \ - -LOCAL_LDLIBS := -llog -lGLESv2 -latomic -lz + com/mapswithme/utils/StringUtils.cpp \ + com/mapswithme/util/Config.cpp \ + com/mapswithme/opengl/androidoglcontext.cpp \ + com/mapswithme/opengl/androidoglcontextfactory.cpp \ + +LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2 -latomic -lz LOCAL_LDLIBS += -Wl,--gc-sections diff --git a/android/jni/com/mapswithme/core/jni_helper.cpp b/android/jni/com/mapswithme/core/jni_helper.cpp index 70b2db95cd..904b49224b 100644 --- a/android/jni/com/mapswithme/core/jni_helper.cpp +++ b/android/jni/com/mapswithme/core/jni_helper.cpp @@ -30,8 +30,6 @@ extern "C" g_jvm = jvm; jni::InitSystemLog(); jni::InitAssertLog(); - // @TODO remove line below after refactoring - InitNVEvent(jvm); JNIEnv * env = jni::GetEnv(); // TODO diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 14515c25aa..985e57ad4c 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1,9 +1,7 @@ #include "Framework.hpp" -#include "VideoTimer.hpp" #include "MapStorage.hpp" #include "../core/jni_helper.hpp" -#include "../core/render_context.hpp" #include "../country/country_helper.hpp" @@ -12,10 +10,7 @@ #include "map/information_display.hpp" #include "map/user_mark.hpp" -#include "gui/controller.hpp" - -#include "graphics/opengl/framebuffer.hpp" -#include "graphics/opengl/opengl.hpp" +#include "drape_frontend/visual_params.hpp" #include "coding/file_container.hpp" #include "coding/file_name_utils.hpp" @@ -61,681 +56,655 @@ namespace namespace android { - void Framework::CallRepaint() {} - - Framework::Framework() - : m_mask(0), - m_isCleanSingleClick(false), - m_doLoadState(true), - m_lastCompass(0.0), - m_wasLongClick(false), - m_densityDpi(0), - m_screenWidth(0), - m_screenHeight(0), - m_currentSlotID(0) - { - ASSERT_EQUAL ( g_framework, 0, () ); - g_framework = this; - m_videoTimer = new VideoTimer(bind(&Framework::CallRepaint, this)); - m_activeMapsConnectionID = m_work.GetCountryTree().GetActiveMapLayout().AddListener(this); - } - - Framework::~Framework() - { - m_work.GetCountryTree().GetActiveMapLayout().RemoveListener(m_activeMapsConnectionID); - delete m_videoTimer; - } +enum MultiTouchAction +{ + MULTITOUCH_UP = 0x00000001, + MULTITOUCH_DOWN = 0x00000002, + MULTITOUCH_MOVE = 0x00000003, + MULTITOUCH_CANCEL = 0x00000004, + MULTITOUCH_POINTER_MASK = 0x0000ff00, + MULTITOUCH_POINTER_SHIFT = 0x00000008, + MULTITOUCH_ACTION_MASK = 0x000000ff, + MULTITOUCH_FORCE_32BITS = 0x7fffffff +}; + +void ShowAllSearchResultsImpl() +{ + frm()->ShowAllSearchResults(); +} - void Framework::OnLocationError(int errorCode) - { - m_work.OnLocationError(static_cast<location::TLocationError>(errorCode)); - } +Framework::Framework() + : m_mask(0), + m_isCleanSingleClick(false), + m_doLoadState(true), + m_lastCompass(0.0), + m_wasLongClick(false) +{ + ASSERT_EQUAL ( g_framework, 0, () ); + g_framework = this; + m_activeMapsConnectionID = m_work.GetCountryTree().GetActiveMapLayout().AddListener(this); +} - void Framework::OnLocationUpdated(location::GpsInfo const & info) - { - Platform::RunOnGuiThreadImpl(bind(&::Framework::OnLocationUpdate, ref(m_work), info)); - } +Framework::~Framework() +{ + m_work.GetCountryTree().GetActiveMapLayout().RemoveListener(m_activeMapsConnectionID); +} - void Framework::OnCompassUpdated(location::CompassInfo const & info, bool force) - { - static double const COMPASS_THRESHOLD = my::DegToRad(1.0); +void Framework::OnLocationError(int errorCode) +{ + m_work.OnLocationError(static_cast<location::TLocationError>(errorCode)); +} - /// @todo Do not emit compass bearing too often while we are passing it through nv-queue. - /// Need to make more experiments in future. - if (force || fabs(ang::GetShortestDistance(m_lastCompass, info.m_bearing)) >= COMPASS_THRESHOLD) - { - m_lastCompass = info.m_bearing; - Platform::RunOnGuiThreadImpl(bind(&::Framework::OnCompassUpdate, ref(m_work), info)); - } - } +void Framework::OnLocationUpdated(location::GpsInfo const & info) +{ + Platform::RunOnGuiThreadImpl(bind(&::Framework::OnLocationUpdate, ref(m_work), info)); +} - void Framework::UpdateCompassSensor(int ind, float * arr) - { - m_sensors[ind].Next(arr); - } +void Framework::OnCompassUpdated(location::CompassInfo const & info) +{ + static double const COMPASS_THRASHOLD = my::DegToRad(1.0); - void Framework::DeleteRenderPolicy() + /// @todo Do not emit compass bearing too often while we are passing it through nv-queue. + /// Need to make more experiments in future. + if (fabs(ang::GetShortestDistance(m_lastCompass, info.m_bearing)) >= COMPASS_THRASHOLD) { - m_work.SaveState(); - LOG(LINFO, ("Clearing current render policy.")); - m_work.SetRenderPolicy(nullptr); - m_work.EnterBackground(); + m_lastCompass = info.m_bearing; + Platform::RunOnGuiThreadImpl(bind(&::Framework::OnCompassUpdate, ref(m_work), info)); } +} - void Framework::SetBestDensity(int densityDpi, RenderPolicy::Params & params) - { - typedef pair<int, graphics::EDensity> P; - P dens[] = { - P(120, graphics::EDensityLDPI), - P(160, graphics::EDensityMDPI), - P(240, graphics::EDensityHDPI), - P(320, graphics::EDensityXHDPI), - P(480, graphics::EDensityXXHDPI) - }; +void Framework::UpdateCompassSensor(int ind, float * arr) +{ + m_sensors[ind].Next(arr); +} - int prevRange = numeric_limits<int>::max(); - int bestRangeIndex = 0; - for (int i = 0; i < ARRAY_SIZE(dens); i++) +float Framework::GetBestDensity(int densityDpi) +{ + typedef pair<int, float> P; + P dens[] = { + P(120, 0.75f), + P(160, 1.0f), + P(240, 1.5f), + P(320, 2.0f), + P(480, 3.0f) + }; + + int prevRange = numeric_limits<int>::max(); + int bestRangeIndex = 0; + for (int i = 0; i < ARRAY_SIZE(dens); i++) + { + int currRange = abs(densityDpi - dens[i].first); + if (currRange <= prevRange) { - int currRange = abs(densityDpi - dens[i].first); - if (currRange <= prevRange) - { - // it is better, take index - bestRangeIndex = i; - prevRange = currRange; - } - else - break; + // it is better, take index + bestRangeIndex = i; + prevRange = currRange; } - - params.m_density = dens[bestRangeIndex].second; - params.m_exactDensityDPI = densityDpi; + else + break; } - bool Framework::InitRenderPolicyImpl(int densityDpi, int screenWidth, int screenHeight) - { - graphics::ResourceManager::Params rmParams; + return dens[bestRangeIndex].second; +} - rmParams.m_videoMemoryLimit = 30 * 1024 * 1024; - rmParams.m_texFormat = graphics::Data4Bpp; - rmParams.m_exactDensityDPI = densityDpi; +bool Framework::CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi) +{ + m_contextFactory.Reset(new AndroidOGLContextFactory(env, jSurface)); + if (!m_contextFactory->IsValid()) + return false; - RenderPolicy::Params rpParams; + float visualScale = GetBestDensity(densityDpi); + m_work.CreateDrapeEngine(m_contextFactory.GetRefPointer(), visualScale, m_contextFactory->GetWidth(), m_contextFactory->GetHeight()); + m_work.SetUpdatesEnabled(true); + m_work.EnterForeground(); - rpParams.m_videoTimer = m_videoTimer; - rpParams.m_useDefaultFB = true; - rpParams.m_rmParams = rmParams; - rpParams.m_primaryRC = make_shared<android::RenderContext>(); + return true; +} - SetBestDensity(densityDpi, rpParams); +void Framework::DeleteDrapeEngine() +{ + m_work.DestroyDrapeEngine(); +} - rpParams.m_skinName = "basic.skn"; - LOG(LINFO, ("Using", graphics::convert(rpParams.m_density), "resources")); +void Framework::Resize(int w, int h) +{ + m_contextFactory->UpdateSurfaceSize(); + m_work.OnSize(w, h); +} - rpParams.m_screenWidth = screenWidth; - rpParams.m_screenHeight = screenHeight; +void Framework::SetMapStyle(MapStyle mapStyle) +{ + //@TODO UVR +} - try - { - m_work.SetRenderPolicy(CreateRenderPolicy(rpParams)); - m_work.InitGuiSubsystem(); - } - catch (graphics::gl::platform_unsupported const & e) - { - LOG(LINFO, ("This android platform is unsupported, reason:", e.what())); - return false; - } +Storage & Framework::Storage() +{ + return m_work.Storage(); +} - return true; - } +void Framework::ShowCountry(TIndex const & idx, bool zoomToDownloadButton) +{ + m_doLoadState = false; - bool Framework::InitRenderPolicy(int densityDpi, int screenWidth, int screenHeight) + if (zoomToDownloadButton) { - if (!InitRenderPolicyImpl(densityDpi, screenWidth, screenHeight)) - return false; - - if (m_doLoadState) - LoadState(); - else - m_doLoadState = true; - - m_work.SetUpdatesEnabled(true); - m_work.EnterForeground(); - - m_densityDpi = densityDpi; - m_screenWidth = screenWidth; - m_screenHeight = screenHeight; - - return true; + m2::RectD const rect = m_work.GetCountryBounds(idx); + double const lon = MercatorBounds::XToLon(rect.Center().x); + double const lat = MercatorBounds::YToLat(rect.Center().y); + m_work.ShowRect(lat, lon, 10); } + else + m_work.ShowCountry(idx); +} - void Framework::SetMapStyle(MapStyle mapStyle) - { - if (m_work.GetMapStyle() == mapStyle) - return; - - bool const hasRenderPolicy = (nullptr != m_work.GetRenderPolicy()); - - if (hasRenderPolicy) - { - // Drop old render policy. - m_work.SetRenderPolicy(nullptr); - - m_work.SetMapStyle(mapStyle); - - // Construct new render policy. - if (!InitRenderPolicyImpl(m_densityDpi, m_screenWidth, m_screenHeight)) - return; - - m_work.SetUpdatesEnabled(true); - } - else - { - // Just set the flag, a new render policy will be initialized with this flag. - m_work.SetMapStyle(mapStyle); - } - } +TStatus Framework::GetCountryStatus(TIndex const & idx) const +{ + return m_work.GetCountryStatus(idx); +} - MapStyle Framework::GetMapStyle() const +void Framework::Move(int mode, double x, double y) +{ + DragEvent e(x, y); + switch (mode) { - return m_work.GetMapStyle(); + case 0: m_work.StartDrag(e); break; + case 1: m_work.DoDrag(e); break; + case 2: m_work.StopDrag(e); break; } +} - Storage & Framework::Storage() +void Framework::Zoom(int mode, double x1, double y1, double x2, double y2) +{ + ScaleEvent e(x1, y1, x2, y2); + switch (mode) { - return m_work.Storage(); + case 0: m_work.StartScale(e); break; + case 1: m_work.DoScale(e); break; + case 2: m_work.StopScale(e); break; } +} - CountryStatusDisplay * Framework::GetCountryStatusDisplay() - { - return m_work.GetCountryStatusDisplay(); - } +void Framework::StartTouchTask(double x, double y, unsigned ms) +{ + KillTouchTask(); + m_deferredTask.reset(new DeferredTask( + bind(&android::Framework::OnProcessTouchTask, this, x, y, ms), milliseconds(ms))); +} - void Framework::ShowCountry(TIndex const & idx, bool zoomToDownloadButton) - { - m_doLoadState = false; +void Framework::KillTouchTask() { m_deferredTask.reset(); } - if (zoomToDownloadButton) - { - m2::RectD const rect = m_work.GetCountryBounds(idx); - double const lon = MercatorBounds::XToLon(rect.Center().x); - double const lat = MercatorBounds::YToLat(rect.Center().y); - m_work.ShowRect(lat, lon, 10); - } - else - m_work.ShowCountry(idx); - } +/// @param[in] mask Active pointers bits : 0x0 - no, 0x1 - (x1, y1), 0x2 - (x2, y2), 0x3 - (x1, y1)(x2, y2). +void Framework::Touch(int action, int mask, double x1, double y1, double x2, double y2) +{ + MultiTouchAction eventType = static_cast<MultiTouchAction>(action); - TStatus Framework::GetCountryStatus(TIndex const & idx) const + // Check if we touch is canceled or we get coordinates NOT from the first pointer. + if ((mask != 0x1) || (eventType == MULTITOUCH_CANCEL)) { - return m_work.GetCountryStatus(idx); - } + ///@TODO UVR + //if (mask == 0x1) + // m_work.GetGuiController()->OnTapCancelled(m2::PointD(x1, y1)); - void Framework::Resize(int w, int h) - { - m_work.OnSize(w, h); + m_isCleanSingleClick = false; + KillTouchTask(); } - - void Framework::DrawFrame() + else { - if (m_work.NeedRedraw()) - { - m_work.SetNeedRedraw(false); + ASSERT_EQUAL(mask, 0x1, ()); - shared_ptr<PaintEvent> paintEvent(new PaintEvent(m_work.GetRenderPolicy()->GetDrawer().get())); + if (eventType == MULTITOUCH_DOWN) + { + KillTouchTask(); - m_work.BeginPaint(paintEvent); - m_work.DoPaint(paintEvent); + m_wasLongClick = false; + m_isCleanSingleClick = true; + m_lastX1 = x1; + m_lastY1 = y1; - NVEventSwapBuffersEGL(); + ///@TODO UVR + //if (m_work.GetGuiController()->OnTapStarted(m2::PointD(x1, y1))) + // return; - m_work.EndPaint(paintEvent); + StartTouchTask(x1, y1, LONG_TOUCH_MS); } - } - void Framework::Move(int mode, double x, double y) - { - DragEvent e(x, y); - switch (mode) + if (eventType == MULTITOUCH_MOVE) { - case 0: m_work.StartDrag(e); break; - case 1: m_work.DoDrag(e); break; - case 2: m_work.StopDrag(e); break; + double const minDist = df::VisualParams::Instance().GetVisualScale() * 10.0; + if ((fabs(x1 - m_lastX1) > minDist) || (fabs(y1 - m_lastY1) > minDist)) + { + m_isCleanSingleClick = false; + KillTouchTask(); + } + + ///@TODO UVR + //if (m_work.GetGuiController()->OnTapMoved(m2::PointD(x1, y1))) + // return; } - } - void Framework::Zoom(int mode, double x1, double y1, double x2, double y2) - { - ScaleEvent e(x1, y1, x2, y2); - switch (mode) + if (eventType == MULTITOUCH_UP) { - case 0: m_work.StartScale(e); break; - case 1: m_work.DoScale(e); break; - case 2: m_work.StopScale(e); break; - } - } + KillTouchTask(); - void Framework::StartTouchTask(double x, double y, unsigned ms) - { - KillTouchTask(); - m_deferredTask.reset(new DeferredTask( - bind(&android::Framework::OnProcessTouchTask, this, x, y, ms), milliseconds(ms))); - } + ///@TODO UVR + //if (m_work.GetGuiController()->OnTapEnded(m2::PointD(x1, y1))) + // return; - void Framework::KillTouchTask() { m_deferredTask.reset(); } + if (!m_wasLongClick && m_isCleanSingleClick) + { + if (m_doubleClickTimer.ElapsedSeconds() <= DOUBLE_TOUCH_S) + { + // performing double-click + m_work.ScaleToPoint(ScaleToPointEvent(x1, y1, 1.5)); + } + else + { + // starting single touch task + StartTouchTask(x1, y1, SHORT_TOUCH_MS); - /// @param[in] mask Active pointers bits : 0x0 - no, 0x1 - (x1, y1), 0x2 - (x2, y2), 0x3 - (x1, y1)(x2, y2). - void Framework::Touch(int action, int mask, double x1, double y1, double x2, double y2) - { - NVMultiTouchEventType eventType = static_cast<NVMultiTouchEventType>(action); + // starting double click + m_doubleClickTimer.Reset(); + } + } + else + m_wasLongClick = false; + } + } - // Check if we touch is canceled or we get coordinates NOT from the first pointer. - if ((mask != 0x1) || (eventType == NV_MULTITOUCH_CANCEL)) + // general case processing + if (m_mask != mask) + { + if (m_mask == 0x0) { if (mask == 0x1) - m_work.GetGuiController()->OnTapCancelled(m2::PointD(x1, y1)); + m_work.StartDrag(DragEvent(x1, y1)); - m_isCleanSingleClick = false; - KillTouchTask(); + if (mask == 0x2) + m_work.StartDrag(DragEvent(x2, y2)); + + if (mask == 0x3) + m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); } - else + + if (m_mask == 0x1) { - ASSERT_EQUAL(mask, 0x1, ()); + m_work.StopDrag(DragEvent(x1, y1)); - if (eventType == NV_MULTITOUCH_DOWN) + if (mask == 0x0) { - KillTouchTask(); + if ((eventType != MULTITOUCH_UP) && (eventType != MULTITOUCH_CANCEL)) + LOG(LWARNING, ("should be MULTITOUCH_UP or MULTITOUCH_CANCEL")); + } - m_wasLongClick = false; - m_isCleanSingleClick = true; - m_lastX1 = x1; - m_lastY1 = y1; + if (m_mask == 0x2) + m_work.StartDrag(DragEvent(x2, y2)); - if (m_work.GetGuiController()->OnTapStarted(m2::PointD(x1, y1))) - return; + if (mask == 0x3) + m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); + } - StartTouchTask(x1, y1, LONG_TOUCH_MS); - } + if (m_mask == 0x2) + { + m_work.StopDrag(DragEvent(x2, y2)); - if (eventType == NV_MULTITOUCH_MOVE) + if (mask == 0x0) { - double const minDist = m_work.GetVisualScale() * 10.0; - if ((fabs(x1 - m_lastX1) > minDist) || (fabs(y1 - m_lastY1) > minDist)) - { - m_isCleanSingleClick = false; - KillTouchTask(); - } - - if (m_work.GetGuiController()->OnTapMoved(m2::PointD(x1, y1))) - return; + if ((eventType != MULTITOUCH_UP) && (eventType != MULTITOUCH_CANCEL)) + LOG(LWARNING, ("should be MULTITOUCH_UP or MULTITOUCH_CANCEL")); } - if (eventType == NV_MULTITOUCH_UP) - { - KillTouchTask(); - - if (m_work.GetGuiController()->OnTapEnded(m2::PointD(x1, y1))) - return; + if (mask == 0x1) + m_work.StartDrag(DragEvent(x1, y1)); - if (!m_wasLongClick && m_isCleanSingleClick) - { - if (m_doubleClickTimer.ElapsedSeconds() <= DOUBLE_TOUCH_S) - { - // performing double-click - m_work.ScaleToPoint(ScaleToPointEvent(x1, y1, 1.5)); - } - else - { - // starting single touch task - StartTouchTask(x1, y1, SHORT_TOUCH_MS); - - // starting double click - m_doubleClickTimer.Reset(); - } - } - else - m_wasLongClick = false; - } + if (mask == 0x3) + m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); } - // general case processing - if (m_mask != mask) + if (m_mask == 0x3) { - if (m_mask == 0x0) + m_work.StopScale(ScaleEvent(m_x1, m_y1, m_x2, m_y2)); + + if (eventType == MULTITOUCH_MOVE) { if (mask == 0x1) m_work.StartDrag(DragEvent(x1, y1)); if (mask == 0x2) m_work.StartDrag(DragEvent(x2, y2)); - - if (mask == 0x3) - m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); } + else + mask = 0; + } + } + else + { + if (eventType == MULTITOUCH_MOVE) + { + if (m_mask == 0x1) + m_work.DoDrag(DragEvent(x1, y1)); + if (m_mask == 0x2) + m_work.DoDrag(DragEvent(x2, y2)); + if (m_mask == 0x3) + m_work.DoScale(ScaleEvent(x1, y1, x2, y2)); + } + if ((eventType == MULTITOUCH_CANCEL) || (eventType == MULTITOUCH_UP)) + { if (m_mask == 0x1) - { m_work.StopDrag(DragEvent(x1, y1)); - - if (mask == 0x0) - { - if ((eventType != NV_MULTITOUCH_UP) && (eventType != NV_MULTITOUCH_CANCEL)) - LOG(LWARNING, ("should be NV_MULTITOUCH_UP or NV_MULTITOUCH_CANCEL")); - } - - if (m_mask == 0x2) - m_work.StartDrag(DragEvent(x2, y2)); - - if (mask == 0x3) - m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); - } - if (m_mask == 0x2) - { m_work.StopDrag(DragEvent(x2, y2)); + if (m_mask == 0x3) + m_work.StopScale(ScaleEvent(m_x1, m_y1, m_x2, m_y2)); + mask = 0; + } + } - if (mask == 0x0) - { - if ((eventType != NV_MULTITOUCH_UP) && (eventType != NV_MULTITOUCH_CANCEL)) - LOG(LWARNING, ("should be NV_MULTITOUCH_UP or NV_MULTITOUCH_CANCEL")); - } + m_x1 = x1; + m_y1 = y1; + m_x2 = x2; + m_y2 = y2; + m_mask = mask; +} - if (mask == 0x1) - m_work.StartDrag(DragEvent(x1, y1)); +void Framework::ShowSearchResult(search::Result const & r) +{ + m_doLoadState = false; + m_work.ShowSearchResult(r); +} - if (mask == 0x3) - m_work.StartScale(ScaleEvent(x1, y1, x2, y2)); - } +void Framework::ShowAllSearchResults() +{ + m_doLoadState = false; + Platform::RunOnGuiThreadImpl(bind(&ShowAllSearchResultsImpl)); +} - if (m_mask == 0x3) - { - m_work.StopScale(ScaleEvent(m_x1, m_y1, m_x2, m_y2)); +bool Framework::Search(search::SearchParams const & params) +{ + m_searchQuery = params.m_query; + return m_work.Search(params); +} - if (eventType == NV_MULTITOUCH_MOVE) - { - if (mask == 0x1) - m_work.StartDrag(DragEvent(x1, y1)); +void Framework::LoadState() +{ + if (!m_work.LoadState()) + m_work.ShowAll(); +} - if (mask == 0x2) - m_work.StartDrag(DragEvent(x2, y2)); - } - else - mask = 0; - } - } - else - { - if (eventType == NV_MULTITOUCH_MOVE) - { - if (m_mask == 0x1) - m_work.DoDrag(DragEvent(x1, y1)); - if (m_mask == 0x2) - m_work.DoDrag(DragEvent(x2, y2)); - if (m_mask == 0x3) - m_work.DoScale(ScaleEvent(x1, y1, x2, y2)); - } +void Framework::SaveState() +{ + m_work.SaveState(); +} - if ((eventType == NV_MULTITOUCH_CANCEL) || (eventType == NV_MULTITOUCH_UP)) - { - if (m_mask == 0x1) - m_work.StopDrag(DragEvent(x1, y1)); - if (m_mask == 0x2) - m_work.StopDrag(DragEvent(x2, y2)); - if (m_mask == 0x3) - m_work.StopScale(ScaleEvent(m_x1, m_y1, m_x2, m_y2)); - mask = 0; - } - } +void Framework::Invalidate() +{ + ///@TODO UVR + //m_work.Invalidate(); +} - m_x1 = x1; - m_y1 = y1; - m_x2 = x2; - m_y2 = y2; - m_mask = mask; - } +void Framework::SetupMeasurementSystem() +{ + m_work.SetupMeasurementSystem(); +} - void Framework::LoadState() - { - if (!m_work.LoadState()) - m_work.ShowAll(); - } +void Framework::AddLocalMaps() +{ + m_work.RegisterAllMaps(); +} - void Framework::SaveState() - { - m_work.SaveState(); - } +void Framework::RemoveLocalMaps() +{ + m_work.DeregisterAllMaps(); +} - void Framework::Invalidate() - { - m_work.Invalidate(); - } +void Framework::GetMapsWithoutSearch(vector<string> & out) const +{ + // Actually, this routing is obsolete and comes from ancient times + // when mwm was without search index. + if (!Settings::IsFirstLaunchForDate(150101)) + return; - void Framework::SetupMeasurementSystem() - { - m_work.SetupMeasurementSystem(); - } + ASSERT(out.empty(), ()); - void Framework::AddLocalMaps() - { - m_work.RegisterAllMaps(); - } + ::Platform const & pl = GetPlatform(); - void Framework::RemoveLocalMaps() - { - m_work.DeregisterAllMaps(); - } + vector<LocalCountryFile> localFiles; + platform::FindAllLocalMaps(localFiles); - TIndex Framework::GetCountryIndex(double lat, double lon) const + for (LocalCountryFile const & localFile : localFiles) { - return m_work.GetCountryIndex(MercatorBounds::FromLatLon(lat, lon)); + CountryFile const countryFile = localFile.GetCountryFile(); + // skip World and WorldCoast + if (countryFile.GetNameWithoutExt() == WORLD_FILE_NAME || + countryFile.GetNameWithoutExt() == WORLD_COASTS_FILE_NAME) + { + continue; + } + try + { + FilesContainerR cont(platform::GetCountryReader(localFile, MapOptions::Map)); + if (!cont.IsExist(SEARCH_INDEX_FILE_TAG)) + out.push_back(countryFile.GetNameWithoutExt()); + } + catch (RootException const & ex) + { + // sdcard can contain dummy _*.mwm files. Suppress these errors. + LOG(LWARNING, ("Bad mwm file:", countryFile.GetNameWithoutExt(), "Error:", ex.Msg())); + } } +} - string Framework::GetCountryCode(double lat, double lon) const - { - return m_work.GetCountryCode(MercatorBounds::FromLatLon(lat, lon)); - } +TIndex Framework::GetCountryIndex(double lat, double lon) const +{ + return m_work.GetCountryIndex(MercatorBounds::FromLatLon(lat, lon)); +} - string Framework::GetCountryNameIfAbsent(m2::PointD const & pt) const - { - TIndex const idx = m_work.GetCountryIndex(pt); - TStatus const status = m_work.GetCountryStatus(idx); - if (status != TStatus::EOnDisk && status != TStatus::EOnDiskOutOfDate) - return m_work.GetCountryName(idx); - else - return string(); - } +string Framework::GetCountryCode(double lat, double lon) const +{ + return m_work.GetCountryCode(MercatorBounds::FromLatLon(lat, lon)); +} - m2::PointD Framework::GetViewportCenter() const - { - return m_work.GetViewportCenter(); - } +string Framework::GetCountryNameIfAbsent(m2::PointD const & pt) const +{ + TIndex const idx = m_work.GetCountryIndex(pt); + TStatus const status = m_work.GetCountryStatus(idx); + if (status != TStatus::EOnDisk && status != TStatus::EOnDiskOutOfDate) + return m_work.GetCountryName(idx); + else + return string(); +} - void Framework::AddString(string const & name, string const & value) - { - m_work.AddString(name, value); - } +m2::PointD Framework::GetViewportCenter() const +{ + return m_work.GetViewportCenter(); +} - void Framework::Scale(double k) - { - m_work.Scale(k); - } +void Framework::AddString(string const & name, string const & value) +{ + m_work.AddString(name, value); +} - ::Framework * Framework::NativeFramework() - { - return &m_work; - } +void Framework::Scale(double k) +{ + m_work.Scale(k); +} - void Framework::OnProcessTouchTask(double x, double y, unsigned ms) - { - m_wasLongClick = (ms == LONG_TOUCH_MS); - GetPinClickManager().OnShowMark(m_work.GetUserMark(m2::PointD(x, y), m_wasLongClick)); - } +::Framework * Framework::NativeFramework() +{ + return &m_work; +} - BookmarkAndCategory Framework::AddBookmark(size_t cat, m2::PointD const & pt, BookmarkData & bm) - { - return BookmarkAndCategory(cat, m_work.AddBookmark(cat, pt, bm)); - } +void Framework::OnProcessTouchTask(double x, double y, unsigned ms) +{ + m_wasLongClick = (ms == LONG_TOUCH_MS); + GetPinClickManager().OnShowMark(m_work.GetUserMark(m2::PointD(x, y), m_wasLongClick)); +} - void Framework::ReplaceBookmark(BookmarkAndCategory const & ind, BookmarkData & bm) - { - m_work.ReplaceBookmark(ind.first, ind.second, bm); - } +BookmarkAndCategory Framework::AddBookmark(size_t cat, m2::PointD const & pt, BookmarkData & bm) +{ + return BookmarkAndCategory(cat, m_work.AddBookmark(cat, pt, bm)); +} - size_t Framework::ChangeBookmarkCategory(BookmarkAndCategory const & ind, size_t newCat) - { - BookmarkCategory * pOld = m_work.GetBmCategory(ind.first); - Bookmark const * oldBm = pOld->GetBookmark(ind.second); - m2::PointD pt = oldBm->GetOrg(); - BookmarkData bm(oldBm->GetName(), oldBm->GetType(), oldBm->GetDescription(), - oldBm->GetScale(), oldBm->GetTimeStamp()); +void Framework::ReplaceBookmark(BookmarkAndCategory const & ind, BookmarkData & bm) +{ + m_work.ReplaceBookmark(ind.first, ind.second, bm); +} - pOld->DeleteBookmark(ind.second); - pOld->SaveToKMLFile(); +size_t Framework::ChangeBookmarkCategory(BookmarkAndCategory const & ind, size_t newCat) +{ + BookmarkCategory * pOld = m_work.GetBmCategory(ind.first); + Bookmark const * oldBm = pOld->GetBookmark(ind.second); + m2::PointD pt = oldBm->GetOrg(); + BookmarkData bm(oldBm->GetName(), oldBm->GetType(), oldBm->GetDescription(), + oldBm->GetScale(), oldBm->GetTimeStamp()); - return AddBookmark(newCat, pt, bm).second; - } + pOld->DeleteBookmark(ind.second); + pOld->SaveToKMLFile(); - bool Framework::ShowMapForURL(string const & url) - { - /// @todo this is weird hack, we should reconsider Android lifecycle handling design - m_doLoadState = false; + return AddBookmark(newCat, pt, bm).second; +} - return m_work.ShowMapForURL(url); - } +bool Framework::ShowMapForURL(string const & url) +{ + /// @todo this is weird hack, we should reconsider Android lifecycle handling design + m_doLoadState = false; - void Framework::DeactivatePopup() - { - GetPinClickManager().RemovePin(); - } + return m_work.ShowMapForURL(url); +} - string Framework::GetOutdatedCountriesString() - { - vector<Country const *> countries; - Storage().GetOutdatedCountries(countries); +void Framework::DeactivatePopup() +{ + GetPinClickManager().RemovePin(); +} - string res; - for (size_t i = 0; i < countries.size(); ++i) - { - res += countries[i]->Name(); - if (i < countries.size() - 1) - res += ", "; - } - return res; - } +string Framework::GetOutdatedCountriesString() +{ + vector<Country const *> countries; + Storage().GetOutdatedCountries(countries); - void Framework::ShowTrack(int category, int track) + string res; + for (size_t i = 0; i < countries.size(); ++i) { - Track const * nTrack = NativeFramework()->GetBmCategory(category)->GetTrack(track); - m_doLoadState = false; - NativeFramework()->ShowTrack(*nTrack); + res += countries[i]->Name(); + if (i < countries.size() - 1) + res += ", "; } + return res; +} - void Framework::SetCountryTreeListener(shared_ptr<jobject> objPtr) - { - m_javaCountryListener = objPtr; - m_work.GetCountryTree().SetListener(this); - } +void Framework::ShowTrack(int category, int track) +{ + Track const * nTrack = NativeFramework()->GetBmCategory(category)->GetTrack(track); + m_doLoadState = false; + NativeFramework()->ShowTrack(*nTrack); +} - void Framework::ResetCountryTreeListener() - { - m_work.GetCountryTree().ResetListener(); - m_javaCountryListener.reset(); - } +void Framework::SetCountryTreeListener(shared_ptr<jobject> objPtr) +{ + m_javaCountryListener = objPtr; + m_work.GetCountryTree().SetListener(this); +} - int Framework::AddActiveMapsListener(shared_ptr<jobject> obj) - { - m_javaActiveMapListeners[m_currentSlotID] = obj; - return m_currentSlotID++; - } +void Framework::ResetCountryTreeListener() +{ + m_work.GetCountryTree().ResetListener(); + m_javaCountryListener.reset(); +} - void Framework::RemoveActiveMapsListener(int slotID) - { - m_javaActiveMapListeners.erase(slotID); - } - ////////////////////////////////////////////////////////////////////////////////////////// - void Framework::ItemStatusChanged(int childPosition) - { - if (m_javaCountryListener == NULL) - return; +int Framework::AddActiveMapsListener(shared_ptr<jobject> obj) +{ + m_javaActiveMapListeners[m_currentSlotID] = obj; + return m_currentSlotID++; +} - JNIEnv * env = jni::GetEnv(); - jmethodID const methodID = jni::GetJavaMethodID(env, - *m_javaCountryListener, - "onItemStatusChanged", - "(I)V"); - ASSERT ( methodID, () ); +void Framework::RemoveActiveMapsListener(int slotID) +{ + m_javaActiveMapListeners.erase(slotID); +} - env->CallVoidMethod(*m_javaCountryListener, methodID, childPosition); - } +////////////////////////////////////////////////////////////////////////////////////////// +void Framework::ItemStatusChanged(int childPosition) +{ + if (m_javaCountryListener == NULL) + return; - void Framework::ItemProgressChanged(int childPosition, LocalAndRemoteSizeT const & sizes) - { - if (m_javaCountryListener == NULL) - return; + JNIEnv * env = jni::GetEnv(); + static jmethodID const methodID = jni::GetJavaMethodID(env, + *m_javaCountryListener, + "onItemStatusChanged", + "(I)V"); + ASSERT ( methodID, () ); - JNIEnv * env = jni::GetEnv(); - jmethodID const methodID = jni::GetJavaMethodID(env, - *m_javaCountryListener, - "onItemProgressChanged", - "(I[J)V"); - ASSERT ( methodID, () ); + env->CallVoidMethod(*m_javaCountryListener, methodID, childPosition); +} - env->CallVoidMethod(*m_javaCountryListener, methodID, childPosition, storage_utils::ToArray(env, sizes)); - } +void Framework::ItemProgressChanged(int childPosition, LocalAndRemoteSizeT const & sizes) +{ + if (m_javaCountryListener == NULL) + return; - void Framework::CountryGroupChanged(ActiveMapsLayout::TGroup const & oldGroup, int oldPosition, - ActiveMapsLayout::TGroup const & newGroup, int newPosition) + JNIEnv * env = jni::GetEnv(); + static jmethodID const methodID = jni::GetJavaMethodID(env, + *m_javaCountryListener, + "onItemProgressChanged", + "(I[J)V"); + ASSERT ( methodID, () ); + + env->CallVoidMethod(*m_javaCountryListener, methodID, childPosition, storage_utils::ToArray(env, sizes)); +} + +void Framework::CountryGroupChanged(ActiveMapsLayout::TGroup const & oldGroup, int oldPosition, + ActiveMapsLayout::TGroup const & newGroup, int newPosition) +{ + JNIEnv * env = jni::GetEnv(); + for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) { - JNIEnv * env = jni::GetEnv(); - for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) - { - jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryGroupChanged", "(IIII)V"); - ASSERT ( methodID, () ); + jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryGroupChanged", "(IIII)V"); + ASSERT ( methodID, () ); - env->CallVoidMethod(*(it->second), methodID, oldGroup, oldPosition, newGroup, newPosition); - } + env->CallVoidMethod(*(it->second), methodID, oldGroup, oldPosition, newGroup, newPosition); } +} - void Framework::CountryStatusChanged(ActiveMapsLayout::TGroup const & group, int position, - TStatus const & oldStatus, TStatus const & newStatus) +void Framework::CountryStatusChanged(ActiveMapsLayout::TGroup const & group, int position, + TStatus const & oldStatus, TStatus const & newStatus) +{ + JNIEnv * env = jni::GetEnv(); + for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) { - JNIEnv * env = jni::GetEnv(); - for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) - { - jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryStatusChanged", "(IIII)V"); - ASSERT ( methodID, () ); + jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryStatusChanged", "(IIII)V"); + ASSERT ( methodID, () ); - env->CallVoidMethod(*(it->second), methodID, group, position, - static_cast<jint>(oldStatus), static_cast<jint>(newStatus)); - } + env->CallVoidMethod(*(it->second), methodID, group, position, + static_cast<jint>(oldStatus), static_cast<jint>(newStatus)); } +} - void Framework::CountryOptionsChanged(ActiveMapsLayout::TGroup const & group, int position, - MapOptions const & oldOpt, MapOptions const & newOpt) +void Framework::CountryOptionsChanged(ActiveMapsLayout::TGroup const & group, int position, + MapOptions const & oldOpt, MapOptions const & newOpt) +{ + JNIEnv * env = jni::GetEnv(); + for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) { - JNIEnv * env = jni::GetEnv(); - for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) - { - jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryOptionsChanged", "(IIII)V"); - ASSERT ( methodID, () ); + jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryOptionsChanged", "(IIII)V"); + ASSERT ( methodID, () ); - env->CallVoidMethod(*(it->second), methodID, group, position, - static_cast<jint>(oldOpt), static_cast<jint>(newOpt)); - } + env->CallVoidMethod(*(it->second), methodID, group, position, + static_cast<jint>(oldOpt), static_cast<jint>(newOpt)); } +} - void Framework::DownloadingProgressUpdate(ActiveMapsLayout::TGroup const & group, int position, - LocalAndRemoteSizeT const & progress) +void Framework::DownloadingProgressUpdate(ActiveMapsLayout::TGroup const & group, int position, + LocalAndRemoteSizeT const & progress) +{ + JNIEnv * env = jni::GetEnv(); + for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) { - JNIEnv * env = jni::GetEnv(); - for (TListenerMap::const_iterator it = m_javaActiveMapListeners.begin(); it != m_javaActiveMapListeners.end(); ++it) - { - jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryProgressChanged", "(II[J)V"); - ASSERT ( methodID, () ); + jmethodID const methodID = jni::GetJavaMethodID(env, *(it->second), "onCountryProgressChanged", "(II[J)V"); + ASSERT ( methodID, () ); - env->CallVoidMethod(*(it->second), methodID, group, position, storage_utils::ToArray(env, progress)); - } + env->CallVoidMethod(*(it->second), methodID, group, position, storage_utils::ToArray(env, progress)); } // Fills mapobject's metadata from UserMark diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 2e0d1d4df9..8fdf99bf8b 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -2,6 +2,10 @@ #include <jni.h> +#include "opengl/androidoglcontextfactory.hpp" + +#include "drape/pointers.hpp" + #include "map/framework.hpp" #include "search/result.hpp" @@ -19,19 +23,14 @@ #include "std/shared_ptr.hpp" #include "std/unique_ptr.hpp" -#include "../../../nv_event/nv_event.hpp" - - -class CountryStatusDisplay; - namespace android { class Framework : public storage::CountryTree::CountryTreeListener, public storage::ActiveMapsLayout::ActiveMapsListener { private: + dp::MasterPointer<AndroidOGLContextFactory> m_contextFactory; ::Framework m_work; - VideoTimer * m_videoTimer; typedef shared_ptr<jobject> TJobject; @@ -42,8 +41,6 @@ namespace android int m_activeMapsConnectionID; - void CallRepaint(); - double m_x1; double m_y1; double m_x2; @@ -76,7 +73,7 @@ namespace android string m_searchQuery; - void SetBestDensity(int densityDpi, RenderPolicy::Params & params); + float GetBestDensity(int densityDpi); bool InitRenderPolicyImpl(int densityDpi, int screenWidth, int screenHeight); @@ -85,7 +82,6 @@ namespace android ~Framework(); storage::Storage & Storage(); - CountryStatusDisplay * GetCountryStatusDisplay(); void DontLoadState() { m_doLoadState = false; } @@ -99,8 +95,8 @@ namespace android void Invalidate(); - bool InitRenderPolicy(int densityDpi, int screenWidth, int screenHeight); - void DeleteRenderPolicy(); + bool CreateDrapeEngine(JNIEnv * env, jobject jSurface, int densityDpi); + void DeleteDrapeEngine(); void SetMapStyle(MapStyle mapStyle); MapStyle GetMapStyle() const; @@ -111,12 +107,19 @@ namespace android void Resize(int w, int h); - void DrawFrame(); - void Move(int mode, double x, double y); void Zoom(int mode, double x1, double y1, double x2, double y2); void Touch(int action, int mask, double x1, double y1, double x2, double y2); + /// Show rect from another activity. Ensure that no LoadState will be called, + /// when main map activity will become active. + void ShowSearchResult(search::Result const & r); + void ShowAllSearchResults(); + + bool Search(search::SearchParams const & params); + string GetLastSearchQuery() { return m_searchQuery; } + void ClearLastSearchQuery() { m_searchQuery.clear(); } + void LoadState(); void SaveState(); diff --git a/android/jni/com/mapswithme/maps/LocationState.cpp b/android/jni/com/mapswithme/maps/LocationState.cpp index 5dca30f266..50b198880e 100644 --- a/android/jni/com/mapswithme/maps/LocationState.cpp +++ b/android/jni/com/mapswithme/maps/LocationState.cpp @@ -5,23 +5,26 @@ #include "../platform/Platform.hpp" -location::State * GetLocationState() -{ - return g_framework->NativeFramework()->GetLocationState().get(); -} +///@TODO UVR +//location::State * GetLocationState() +//{ +// return g_framework->NativeFramework()->GetLocationState().get(); +//} extern "C" { JNIEXPORT void JNICALL Java_com_mapswithme_maps_LocationState_switchToNextMode(JNIEnv * env, jobject thiz) { - android::Platform::RunOnGuiThreadImpl(bind(&location::State::SwitchToNextMode, GetLocationState()), false); + ///@TODO UVR + //android::Platform::RunOnGuiThreadImpl(bind(&location::State::SwitchToNextMode, GetLocationState()), false); } JNIEXPORT jint JNICALL Java_com_mapswithme_maps_LocationState_getLocationStateMode(JNIEnv * env, jobject thiz) { - return GetLocationState()->GetMode(); + ///@TODO UVR + return 0;//GetLocationState()->GetMode(); } void LocationStateModeChanged(location::State::Mode mode, shared_ptr<jobject> const & obj) @@ -33,24 +36,28 @@ extern "C" JNIEXPORT jint JNICALL Java_com_mapswithme_maps_LocationState_addLocationStateModeListener(JNIEnv * env, jobject thiz, jobject obj) { - return GetLocationState()->AddStateModeListener(bind(&LocationStateModeChanged, _1, jni::make_global_ref(obj))); + ///@TODO UVR + return 0;//GetLocationState()->AddStateModeListener(bind(&LocationStateModeChanged, _1, jni::make_global_ref(obj))); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_LocationState_removeLocationStateModeListener(JNIEnv * env, jobject thiz, jint slotID) { - GetLocationState()->RemoveStateModeListener(slotID); + ///@TODO UVR + //GetLocationState()->RemoveStateModeListener(slotID); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_LocationState_turnOff(JNIEnv * env, jobject thiz) { - GetLocationState()->TurnOff(); + ///@TODO UVR + //GetLocationState()->TurnOff(); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_LocationState_invalidatePosition(JNIEnv * env, jobject thiz) { - android::Platform::RunOnGuiThreadImpl(bind(&location::State::InvalidatePosition, GetLocationState()), false); + ///@TODO UVR + //android::Platform::RunOnGuiThreadImpl(bind(&location::State::InvalidatePosition, GetLocationState()), false); } } diff --git a/android/jni/com/mapswithme/maps/MapFragment.cpp b/android/jni/com/mapswithme/maps/MapFragment.cpp index 420aea8dbd..d69a30e048 100644 --- a/android/jni/com/mapswithme/maps/MapFragment.cpp +++ b/android/jni/com/mapswithme/maps/MapFragment.cpp @@ -7,10 +7,6 @@ #include "../platform/Platform.hpp" -#include "../../../nv_event/nv_event.hpp" - -#include "map/country_status_display.hpp" - #include "storage/index.hpp" #include "base/logging.hpp" @@ -105,15 +101,16 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_MapFragment_nativeConnectDownloadButton(JNIEnv * env, jobject thiz) { - CountryStatusDisplay * display = g_framework->GetCountryStatusDisplay(); + ///@TODO UVR + //CountryStatusDisplay * display = g_framework->GetCountryStatusDisplay(); - jmethodID methodID = jni::GetJavaMethodID(env, thiz, "OnDownloadCountryClicked", "(IIII)V"); + //jmethodID methodID = jni::GetJavaMethodID(env, thiz, "OnDownloadCountryClicked", "(IIII)V"); - display->SetDownloadCountryListener(bind(&CallOnDownloadCountryClicked, - jni::make_global_ref(thiz), - _1, - _2, - methodID)); + //display->SetDownloadCountryListener(bind(&CallOnDownloadCountryClicked, + // jni::make_global_ref(thiz), + // _1, + // _2, + // methodID)); } JNIEXPORT void JNICALL diff --git a/android/jni/com/mapswithme/maps/MwmApplication.cpp b/android/jni/com/mapswithme/maps/MwmApplication.cpp index 8436ec1c9d..40491c6c7b 100644 --- a/android/jni/com/mapswithme/maps/MwmApplication.cpp +++ b/android/jni/com/mapswithme/maps/MwmApplication.cpp @@ -30,7 +30,8 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_MwmApplication_nativeIsBenchmarking(JNIEnv * env, jobject thiz) { - return static_cast<jboolean>(g_framework->NativeFramework()->IsBenchmarking()); + ///@TODO UVR + return JNI_FALSE; //static_cast<jboolean>(g_framework->NativeFramework()->IsBenchmarking()); } JNIEXPORT jboolean JNICALL diff --git a/android/jni/com/mapswithme/maps/RenderActivity.cpp b/android/jni/com/mapswithme/maps/RenderActivity.cpp new file mode 100644 index 0000000000..7c2738e17c --- /dev/null +++ b/android/jni/com/mapswithme/maps/RenderActivity.cpp @@ -0,0 +1,46 @@ +#include "Framework.hpp" + +#include "../core/jni_helper.hpp" + +extern "C" +{ + +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_RenderActivity_CreateEngine(JNIEnv * env, jobject thiz, jobject surface, jint destiny) +{ + return static_cast<jboolean>(g_framework->CreateDrapeEngine(env, surface, static_cast<int>(destiny))); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_RenderActivity_SurfaceResized(JNIEnv * env, jobject thiz, jint w, jint h) +{ + g_framework->Resize(static_cast<int>(w), static_cast<int>(h)); +} + +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_RenderActivity_DestroyEngine(JNIEnv * env, jobject thiz) +{ + g_framework->DeleteDrapeEngine(); +} + +JNIEXPORT jboolean JNICALL +Java_com_mapswithme_maps_RenderActivity_OnTouch(JNIEnv * env, jobject thiz, jint action, jboolean hasFirst, jboolean hasSecond, + jfloat x1, jfloat y1, jfloat x2, jfloat y2) +{ + int mask = 0; + if (hasFirst == JNI_TRUE) + mask |= 0x1; + if (hasSecond == JNI_TRUE) + mask |= 0x2; + + g_framework->Touch(static_cast<int>(action), mask, + static_cast<double>(x1), + static_cast<double>(y1), + static_cast<double>(x2), + static_cast<double>(y2)); + + return JNI_TRUE; +} + + +}
\ No newline at end of file diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp index 4421543bdc..d886b23073 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp @@ -111,12 +111,12 @@ extern "C" string formattedLenght; MeasurementUtils::FormatDistance(nTrack->GetLengthMeters(), formattedLenght); - graphics::Color nColor = nTrack->GetMainColor(); + dp::Color nColor = nTrack->GetMainColor(); - jint androidColor = shift(nColor.a, 24) + - shift(nColor.r, 16) + - shift(nColor.g, 8) + - nColor.b; + jint androidColor = shift(nColor.GetAlfa(), 24) + + shift(nColor.GetRed(), 16) + + shift(nColor.GetGreen(), 8) + + nColor.GetBlue(); return env->NewObject(trackClazz, cId, index, id, jni::ToJavaString(env, nTrack->GetName()), diff --git a/android/jni/com/mapswithme/opengl/android_gl_utils.hpp b/android/jni/com/mapswithme/opengl/android_gl_utils.hpp new file mode 100644 index 0000000000..17c910c53f --- /dev/null +++ b/android/jni/com/mapswithme/opengl/android_gl_utils.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include <EGL/egl.h> +#include <GLES2/gl2.h> + +namespace android +{ + +class ConfigComparator +{ +public: + ConfigComparator(EGLDisplay display) + : m_display(display) + {} + + int operator()(EGLConfig const & l, EGLConfig const & r) const + { + return configWeight(l) - configWeight(r); + } + + int configWeight(EGLConfig const & config) const + { + int val = -1; + eglGetConfigAttrib(m_display, config, EGL_CONFIG_CAVEAT, &val); + + switch (val) + { + case EGL_NONE: + return 0; + case EGL_SLOW_CONFIG: + return 1; + case EGL_NON_CONFORMANT_CONFIG: + return 2; + default: + return 0; + } + } + +private: + EGLDisplay m_display; +}; + +} // namespace android diff --git a/android/jni/com/mapswithme/opengl/androidoglcontext.cpp b/android/jni/com/mapswithme/opengl/androidoglcontext.cpp new file mode 100644 index 0000000000..01331fd278 --- /dev/null +++ b/android/jni/com/mapswithme/opengl/androidoglcontext.cpp @@ -0,0 +1,58 @@ +#include "androidoglcontext.hpp" +#include "../../../base/assert.hpp" +#include "../../../base/logging.hpp" + +namespace android +{ + +static EGLint * getContextAttributesList() +{ + static EGLint contextAttrList[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + return contextAttrList; +} + +AndroidOGLContext::AndroidOGLContext(EGLDisplay display, EGLSurface surface, EGLConfig config, AndroidOGLContext * contextToShareWith) + : m_nativeContext(EGL_NO_CONTEXT) + , m_surface(surface) + , m_display(display) +{ + ASSERT(m_surface != EGL_NO_SURFACE, ()); + ASSERT(m_display != EGL_NO_DISPLAY, ()); + + EGLContext sharedContext = (contextToShareWith == NULL) ? EGL_NO_CONTEXT : contextToShareWith->m_nativeContext; + m_nativeContext = eglCreateContext(m_display, config, sharedContext, getContextAttributesList()); + LOG(LINFO, ("UVR : Context created = ", m_nativeContext)); + + CHECK(m_nativeContext != EGL_NO_CONTEXT, ()); + LOG(LINFO, ("UVR : Present")); +} + +AndroidOGLContext::~AndroidOGLContext() +{ + // Native context must exist + eglDestroyContext(m_display, m_nativeContext); +} + +void AndroidOGLContext::setDefaultFramebuffer() +{ + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +void AndroidOGLContext::makeCurrent() +{ + LOG(LINFO, ("UVR : Make current for context")); + if (eglMakeCurrent(m_display, m_surface, m_surface, m_nativeContext) != EGL_TRUE) + LOG(LINFO, ("Failed to set current context:", eglGetError())); +} + +void AndroidOGLContext::present() +{ + LOG(LINFO, ("UVR : Present")); + if(eglSwapBuffers(m_display, m_surface) != EGL_TRUE) + LOG(LINFO, ("Failed to swap buffers:", eglGetError())); +} + +} // namespace android
\ No newline at end of file diff --git a/android/jni/com/mapswithme/opengl/androidoglcontext.hpp b/android/jni/com/mapswithme/opengl/androidoglcontext.hpp new file mode 100644 index 0000000000..07752452fc --- /dev/null +++ b/android/jni/com/mapswithme/opengl/androidoglcontext.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include "../../../drape/oglcontext.hpp" + +#include <GLES2/gl2.h> +#include <EGL/egl.h> + +namespace android +{ + +class AndroidOGLContext : public dp::OGLContext +{ +public: + AndroidOGLContext(EGLDisplay display, EGLSurface surface, EGLConfig config, AndroidOGLContext * contextToShareWith); + ~AndroidOGLContext(); + + virtual void makeCurrent(); + virtual void present(); + virtual void setDefaultFramebuffer(); + +private: + // {@ Owned by Context + EGLContext m_nativeContext; + // @} + + // {@ Owned by Factory + EGLSurface m_surface; + EGLDisplay m_display; + // @} +}; + +} // namespace android diff --git a/android/jni/com/mapswithme/opengl/androidoglcontextfactory.cpp b/android/jni/com/mapswithme/opengl/androidoglcontextfactory.cpp new file mode 100644 index 0000000000..d5c79d6aef --- /dev/null +++ b/android/jni/com/mapswithme/opengl/androidoglcontextfactory.cpp @@ -0,0 +1,215 @@ +#include "androidoglcontextfactory.hpp" +#include "android_gl_utils.hpp" + +#include "../../../../../base/assert.hpp" +#include "../../../../../base/logging.hpp" + +#include "../../../../../std/algorithm.hpp" + +#include <EGL/egl.h> +#include <android/native_window_jni.h> + +namespace android +{ + +static EGLint * getConfigAttributesList() +{ + static EGLint attr_list[] = { + EGL_RED_SIZE, 5, + EGL_GREEN_SIZE, 6, + EGL_BLUE_SIZE, 5, + EGL_STENCIL_SIZE, 0, + EGL_DEPTH_SIZE, 16, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_SURFACE_TYPE, EGL_PBUFFER_BIT | EGL_WINDOW_BIT, + EGL_NONE + }; + return attr_list; +} + +AndroidOGLContextFactory::AndroidOGLContextFactory(JNIEnv * env, jobject jsurface) + : m_drawContext(NULL) + , m_uploadContext(NULL) + , m_windowSurface(EGL_NO_SURFACE) + , m_pixelbufferSurface(EGL_NO_SURFACE) + , m_config(NULL) + , m_nativeWindow(NULL) + , m_display(EGL_NO_DISPLAY) + , m_surfaceWidth(0) + , m_surfaceHeight(0) + , m_valid(false) +{ + LOG(LINFO, ("UVR : Start create factory")); + if (!jsurface) + { + LOG(LINFO, ("Java surface incorrect")); + return; + } + + m_nativeWindow = ANativeWindow_fromSurface(env, jsurface); + if (!m_nativeWindow) + { + LOG(LINFO, ("Can't get native window from Java surface")); + return; + } + + m_display = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (m_display == EGL_NO_DISPLAY) + { + LOG(LINFO, ("Can't query default egl display. Error code = ", eglGetError())); + return; + } + + EGLint version[2] = {0}; + if (!eglInitialize(m_display, &version[0], &version[1])) + { + LOG(LINFO, ("EGL initialize failed. Error code = ", eglGetError())); + return; + } + + if (!(createWindowSurface() && createPixelbufferSurface())) + { + eglTerminate(m_display); + return; + } + + if (!QuerySurfaceSize()) + return; + + LOG(LINFO, ("UVR : Correct created factory")); + m_valid = true; +} + +AndroidOGLContextFactory::~AndroidOGLContextFactory() +{ + if (IsValid()) + { + delete m_drawContext; + delete m_uploadContext; + + eglDestroySurface(m_display, m_windowSurface); + eglDestroySurface(m_display, m_pixelbufferSurface); + eglTerminate(m_display); + + ANativeWindow_release(m_nativeWindow); + } +} + +bool AndroidOGLContextFactory::IsValid() const +{ + return m_valid; +} + +int AndroidOGLContextFactory::GetWidth() const +{ + ASSERT(IsValid(), ()); + return m_surfaceWidth; +} + +int AndroidOGLContextFactory::GetHeight() const +{ + ASSERT(IsValid(), ()); + return m_surfaceHeight; +} + +void AndroidOGLContextFactory::UpdateSurfaceSize() +{ + ASSERT(IsValid(), ()); + VERIFY(QuerySurfaceSize(), ()); +} + +bool AndroidOGLContextFactory::QuerySurfaceSize() +{ + EGLint queryResult; + if (eglQuerySurface(m_display, m_windowSurface, EGL_WIDTH, &queryResult) == EGL_FALSE) + { + LOG(LINFO, ("Can't query surface width. Error code = ", eglGetError())); + return false; + } + + m_surfaceWidth = static_cast<int>(queryResult); + if (eglQuerySurface(m_display, m_windowSurface, EGL_HEIGHT, &queryResult) == EGL_FALSE) + { + LOG(LINFO, ("Can't query surface height. Error code = ", eglGetError())); + return false; + } + + m_surfaceHeight = static_cast<int>(queryResult); + return true; +} + +dp::OGLContext * AndroidOGLContextFactory::getDrawContext() +{ + ASSERT(IsValid(), ()); + ASSERT(m_windowSurface != EGL_NO_SURFACE, ()); + if (m_drawContext == NULL) + m_drawContext = new AndroidOGLContext(m_display, m_windowSurface, m_config, m_uploadContext); + return m_drawContext; +} + +dp::OGLContext * AndroidOGLContextFactory::getResourcesUploadContext() +{ + ASSERT(IsValid(), ()); + ASSERT(m_pixelbufferSurface != EGL_NO_SURFACE, ()); + if (m_uploadContext == NULL) + m_uploadContext = new AndroidOGLContext(m_display, m_pixelbufferSurface, m_config, m_drawContext); + return m_uploadContext; +} + +bool AndroidOGLContextFactory::createWindowSurface() +{ + EGLConfig configs[40]; + int count = 0; + VERIFY(eglChooseConfig(m_display, getConfigAttributesList(), configs, 40, &count) == EGL_TRUE, ()); + ASSERT(count > 0, ("Didn't find any configs.")); + + sort(&configs[0], &configs[count], ConfigComparator(m_display)); + for (int i = 0; i < count; ++i) + { + EGLConfig currentConfig = configs[i]; + EGLint surfaceAttributes[] = { EGL_RENDER_BUFFER, EGL_BACK_BUFFER, EGL_NONE }; + m_windowSurface = eglCreateWindowSurface(m_display, currentConfig, m_nativeWindow, surfaceAttributes); + if (m_windowSurface == EGL_NO_SURFACE) + continue; + else + m_config = currentConfig; + + EGLint configId = 0; + eglGetConfigAttrib(m_display, m_config, EGL_CONFIG_ID, &configId); + LOG(LINFO, ("Choosen config id:", configId)); + + break; + } + + if (m_windowSurface == EGL_NO_SURFACE) + { + LOG(LINFO, ("Can't create EGLWindowSurface. Error code = ", eglGetError())); + return false; + } + + return true; +} + +bool AndroidOGLContextFactory::createPixelbufferSurface() +{ + //ASSERT(m_config != NULL, ()); + + const GLuint size = 1; // yes, 1 is the correct size, we dont really draw on it + static EGLint surfaceConfig[] = { + EGL_WIDTH, size, + EGL_HEIGHT, size, + EGL_NONE + }; + + m_pixelbufferSurface = eglCreatePbufferSurface(m_display, m_config, surfaceConfig); + + if (m_pixelbufferSurface == EGL_NO_SURFACE) + { + LOG(LINFO, ("Can't create buffer surface for UploadThread. Error code = ", eglGetError())); + return false; + } + + return true; +} + +} // namespace android diff --git a/android/jni/com/mapswithme/opengl/androidoglcontextfactory.hpp b/android/jni/com/mapswithme/opengl/androidoglcontextfactory.hpp new file mode 100644 index 0000000000..5f9a6ab0c1 --- /dev/null +++ b/android/jni/com/mapswithme/opengl/androidoglcontextfactory.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include "../core/jni_helper.hpp" +#include "androidoglcontext.hpp" +#include "../../../drape/oglcontextfactory.hpp" + +namespace android +{ + +class AndroidOGLContextFactory : public dp::OGLContextFactory +{ +public: + AndroidOGLContextFactory(JNIEnv * env, jobject jsurface); + ~AndroidOGLContextFactory(); + + bool IsValid() const; + + virtual dp::OGLContext * getDrawContext(); + virtual dp::OGLContext * getResourcesUploadContext(); + + int GetWidth() const; + int GetHeight() const; + void UpdateSurfaceSize(); + +private: + bool QuerySurfaceSize(); + +private: + bool createWindowSurface(); + bool createPixelbufferSurface(); + + AndroidOGLContext * m_drawContext; + AndroidOGLContext * m_uploadContext; + + EGLSurface m_windowSurface; + EGLSurface m_pixelbufferSurface; + EGLConfig m_config; + + ANativeWindow * m_nativeWindow; + EGLDisplay m_display; + + int m_surfaceWidth; + int m_surfaceHeight; + + bool m_valid; +}; + +} // namespace android diff --git a/android/jni/com/mapswithme/platform/Platform.cpp b/android/jni/com/mapswithme/platform/Platform.cpp index 157823629e..7eb6b07da6 100644 --- a/android/jni/com/mapswithme/platform/Platform.cpp +++ b/android/jni/com/mapswithme/platform/Platform.cpp @@ -2,8 +2,6 @@ #include "../core/jni_helper.hpp" -#include "../../../nv_event/nv_event.hpp" - #include "platform/settings.hpp" #include "base/logging.hpp" @@ -172,7 +170,8 @@ namespace android void Platform::RunOnGuiThreadImpl(TFunctor const & fn, bool blocking) { - postMWMEvent(new TFunctor(fn), blocking); + ///@TODO + //postMWMEvent(new TFunctor(fn), blocking); } } diff --git a/android/src/com/mapswithme/country/DownloadActivity.java b/android/src/com/mapswithme/country/DownloadActivity.java index 8398c1c1b2..743400063d 100644 --- a/android/src/com/mapswithme/country/DownloadActivity.java +++ b/android/src/com/mapswithme/country/DownloadActivity.java @@ -3,6 +3,7 @@ package com.mapswithme.country; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.util.Log; import com.mapswithme.maps.base.BaseMwmFragmentActivity; diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index a26b08d76f..5e01617db2 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -15,6 +15,8 @@ import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v7.app.AlertDialog; import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -75,7 +77,6 @@ import com.mapswithme.util.statistics.Statistics; import ru.mail.android.mytarget.nativeads.NativeAppwallAd; import ru.mail.android.mytarget.nativeads.banners.NativeAppwallBanner; - public class MwmActivity extends BaseMwmFragmentActivity implements LocationHelper.LocationListener, OnBalloonListener, @@ -297,6 +298,22 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onCreate(@Nullable Bundle savedInstanceState) { + // Use full-screen on Kindle Fire only + // TODO UVR + /* + if (Utils.isAmazonDevice()) + { + getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN); + getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + } + setContentView(R.layout.map); + + SurfaceView surface = (SurfaceView)findViewById(R.id.map_surfaceview); + surface.setOnTouchListener(this); + SurfaceHolder holder = surface.getHolder(); + holder.setType(SurfaceHolder.SURFACE_TYPE_GPU); + holder.addCallback(this); + */ super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); diff --git a/android/src/com/mapswithme/maps/RenderActivity.java b/android/src/com/mapswithme/maps/RenderActivity.java new file mode 100644 index 0000000000..80fb726f20 --- /dev/null +++ b/android/src/com/mapswithme/maps/RenderActivity.java @@ -0,0 +1,122 @@ +package com.mapswithme.maps; + +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.MotionEvent; +import android.view.Surface; +import android.view.SurfaceHolder; +import android.view.View; + +import com.mapswithme.maps.base.MWMFragmentActivity; + +public abstract class RenderActivity extends MWMFragmentActivity + implements View.OnTouchListener, + SurfaceHolder.Callback +{ + private int mLastPointerId = 0; + private SurfaceHolder mSurfaceHolder = null; + private int m_displayDensity = 0; + + @Override + public void surfaceCreated(SurfaceHolder surfaceHolder) + { + Log.i("UVR", "Surface created"); + mSurfaceHolder = surfaceHolder; + InitEngine(); + } + + @Override + public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int w, int h) + { + SurfaceResized(w, h); + } + + @Override + public void surfaceDestroyed(SurfaceHolder surfaceHolder) + { + mSurfaceHolder = null; + DestroyEngine(); + } + + @Override + protected void onCreate(Bundle b) + { + Log.i("UVR", "onCreate"); + final DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + m_displayDensity = metrics.densityDpi; + super.onCreate(b); + } + + @Override + protected void onResume() + { + Log.i("UVR", "onResume"); + InitEngine(); + super.onResume(); + } + + @Override + protected void onStop() + { + super.onStop(); + DestroyEngine(); + } + + @Override + public boolean onTouch(View view, MotionEvent event) + { + final int count = event.getPointerCount(); + + if (count == 0) + return super.onTouchEvent(event); + + switch (count) + { + case 1: + { + mLastPointerId = event.getPointerId(0); + + final float x0 = event.getX(); + final float y0 = event.getY(); + + return OnTouch(event.getAction(), true, false, x0, y0, 0, 0); + } + default: + { + final float x0 = event.getX(0); + final float y0 = event.getY(0); + + final float x1 = event.getX(1); + final float y1 = event.getY(1); + + if (event.getPointerId(0) == mLastPointerId) + return OnTouch(event.getAction(), true, true, x0, y0, x1, y1); + else + return OnTouch(event.getAction(), true, true, x1, y1, x0, y0); + } + } + } + + private void InitEngine() + { + Log.i("UVR", "Init engine"); + if (mSurfaceHolder != null) + { + Log.i("UVR", "CreateEngine"); + if (CreateEngine(mSurfaceHolder.getSurface(), m_displayDensity)) + OnRenderingInitialized(); + else + ReportUnsupported(); + } + } + + abstract public void OnRenderingInitialized(); + abstract public void ReportUnsupported(); + + private native boolean CreateEngine(Surface surface, int density); + private native void SurfaceResized(int w, int h); + private native void DestroyEngine(); + private native boolean OnTouch(int actionType, boolean hasFirst, boolean hasSecond, float x1, float y1, float x2, float y2); +} diff --git a/common.pri b/common.pri index c643eed621..305b420302 100644 --- a/common.pri +++ b/common.pri @@ -3,12 +3,6 @@ # To use it, define ROOT_DIR variable and include($$ROOT_DIR/common.pri) -#CONFIG *= drape - -drape { - DEFINES *= USE_DRAPE -} - CONFIG(map_designer) { DEFINES *= STANDALONE_APP DEFINES *= BUILD_DESIGNER diff --git a/data/Onmac.kml b/data/Onmac.kml new file mode 100644 index 0000000000..4a45d2cdef --- /dev/null +++ b/data/Onmac.kml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kml xmlns="http://earth.google.com/kml/2.2"> +<Document> + <Style id="placemark-blue"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-blue.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-brown"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-brown.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-green"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-green.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-orange"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-orange.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-pink"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-pink.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-purple"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-purple.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-red"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-red.png</href> + </Icon> + </IconStyle> + </Style> + <Style id="placemark-yellow"> + <IconStyle> + <Icon> + <href>http://mapswith.me/placemarks/placemark-yellow.png</href> + </Icon> + </IconStyle> + </Style> + <name>Onmac</name> + <visibility>1</visibility> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-20T15:12:27Z</when></TimeStamp> + <styleUrl>#placemark-red</styleUrl> + <Point><coordinates>26.317522,53.405017</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>17</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Piaseczno</name> + <TimeStamp><when>2015-01-20T17:34:01Z</when></TimeStamp> + <styleUrl>#placemark-red</styleUrl> + <Point><coordinates>21.027084,52.07475</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>9</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:45:58Z</when></TimeStamp> + <styleUrl>#placemark-blue</styleUrl> + <Point><coordinates>26.317823,53.40317</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:46:05Z</when></TimeStamp> + <styleUrl>#placemark-green</styleUrl> + <Point><coordinates>26.321484,53.402534</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:46:10Z</when></TimeStamp> + <styleUrl>#placemark-yellow</styleUrl> + <Point><coordinates>26.31886,53.401137</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:46:16Z</when></TimeStamp> + <styleUrl>#placemark-purple</styleUrl> + <Point><coordinates>26.320134,53.403815</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:46:22Z</when></TimeStamp> + <styleUrl>#placemark-orange</styleUrl> + <Point><coordinates>26.319229,53.402365</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> + <Placemark> + <name>Великие Жуховичи</name> + <TimeStamp><when>2015-01-23T09:46:28Z</when></TimeStamp> + <styleUrl>#placemark-brown</styleUrl> + <Point><coordinates>26.317524,53.402399</coordinates></Point> + <ExtendedData xmlns:mwm="http://mapswith.me"> + <mwm:scale>16</mwm:scale> + </ExtendedData> + </Placemark> +</Document> +</kml> diff --git a/drape/color.hpp b/drape/color.hpp index 16e7c7bac9..071ad118ed 100644 --- a/drape/color.hpp +++ b/drape/color.hpp @@ -1,6 +1,8 @@ #pragma once #include "std/cstdint.hpp" +#include "std/sstream.hpp" +#include "std/string.hpp" namespace dp { @@ -15,6 +17,7 @@ struct Color uint8_t GetBlue() const; uint8_t GetAlfa() const; + bool operator==(Color const & other) const { return m_rgba == other.m_rgba; } bool operator< (Color const & other) const { return m_rgba < other.m_rgba; } static Color Black() { return Color(0, 0, 0, 255); } @@ -34,4 +37,14 @@ inline uint8_t ExtractAlfa(uint32_t argb); Color Extract(uint32_t argb); Color Extract(uint32_t xrgb, uint8_t a); +inline string DebugPrint(Color const & c) +{ + ostringstream out; + out << "R = " << c.GetRed() + << "G = " << c.GetGreen() + << "B = " << c.GetBlue() + << "A = " << c.GetAlfa(); + return out.str(); +} + } diff --git a/drape/drape_common.pri b/drape/drape_common.pri index 304a0173ad..3a036a878a 100644 --- a/drape/drape_common.pri +++ b/drape/drape_common.pri @@ -40,7 +40,8 @@ SOURCES += \ $$DRAPE_DIR/stipple_pen_resource.cpp \ $$DRAPE_DIR/texture_of_colors.cpp \ $$DRAPE_DIR/glyph_manager.cpp \ - $$DRAPE_DIR/utils/vertex_decl.cpp + $$DRAPE_DIR/utils/vertex_decl.cpp \ + $$DRAPE_DIR/utils/projection.cpp \ HEADERS += \ $$ROOT_DIR/3party/sdf_image/sdf_image.h \ @@ -87,4 +88,5 @@ HEADERS += \ $$DRAPE_DIR/glsl_types.hpp \ $$DRAPE_DIR/glsl_func.hpp \ $$DRAPE_DIR/glyph_manager.hpp \ - $$DRAPE_DIR/utils/vertex_decl.hpp + $$DRAPE_DIR/utils/vertex_decl.hpp \ + $$DRAPE_DIR/utils/projection.hpp \ diff --git a/drape/glIncludes.hpp b/drape/glIncludes.hpp index 3dd15129b9..70378f0454 100644 --- a/drape/glIncludes.hpp +++ b/drape/glIncludes.hpp @@ -14,6 +14,11 @@ #define GL_GLEXT_PROTOTYPES #include <GL/gl.h> #include "../3party/GL/glext.h" +#elif defined(OMIM_OS_ANDROID) + #include <EGL/egl.h> + #include <GLES2/gl2.h> + #define GL_GLEXT_PROTOTYPES + #include <GLES2/gl2ext.h> #else #define GL_GLEXT_PROTOTYPES #include <GL/gl.h> diff --git a/drape/glfunctions.cpp b/drape/glfunctions.cpp index 759bfaf039..613b2e64f5 100644 --- a/drape/glfunctions.cpp +++ b/drape/glfunctions.cpp @@ -12,7 +12,11 @@ #include "std/cstring.hpp" -#ifndef OMIM_OS_WINDOWS +#if defined(OMIM_OS_WINDOWS) +#define APIENTRY __stdcall +#elif defined(OMIM_OS_ANDROID) +#define APIENTRY __NDK_FPABI__ +#else #define APIENTRY #endif @@ -74,21 +78,21 @@ namespace void (APIENTRY *glEnableVertexAttributeFn)(GLuint location) = NULL; void (APIENTRY *glVertexAttributePointerFn)(GLuint index, - GLint count, - GLenum type, - GLboolean normalize, - GLsizei stride, - GLvoid const * p) = NULL; + GLint count, + GLenum type, + GLboolean normalize, + GLsizei stride, + GLvoid const * p) = NULL; GLint (APIENTRY *glGetUniformLocationFn)(GLuint programID, GLchar const * name) = NULL; void (APIENTRY *glGetActiveUniformFn)(GLuint programID, - GLuint uniformIndex, - GLsizei bufSize, - GLsizei * length, - GLint * size, - GLenum * type, - GLchar * name) = NULL; + GLuint uniformIndex, + GLsizei bufSize, + GLsizei * length, + GLint * size, + GLenum * type, + GLchar * name) = NULL; void (APIENTRY *glUniform1iFn)(GLint location, GLint value) = NULL; void (APIENTRY *glUniform2iFn)(GLint location, GLint v1, GLint v2) = NULL; @@ -123,6 +127,15 @@ void GLFunctions::Init() glDeleteVertexArrayFn = &::glDeleteVertexArrays; glMapBufferFn = &::glMapBuffer; // I don't know correct name for linux! glUnmapBufferFn = &::glUnmapBuffer; // I don't know correct name for linux! +#elif defined(OMIM_OS_ANDROID) + typedef void (APIENTRY *glGenVertexArraysType)(GLsizei n, GLuint * arrays); + typedef void (APIENTRY *glBindVertexArrayType)(GLuint array); + typedef void (APIENTRY *glDeleteVertexArrayType)(GLsizei n, GLuint const * ids); + glGenVertexArraysFn = (glGenVertexArraysType)eglGetProcAddress("glGenVertexArraysOES"); + glBindVertexArrayFn = (glBindVertexArrayType)eglGetProcAddress("glBindVertexArrayOES"); + glDeleteVertexArrayFn = (glDeleteVertexArrayType)eglGetProcAddress("glDeleteVertexArraysOES"); + glMapBufferFn = &::glMapBufferOES; + glUnmapBufferFn = &::glUnmapBufferOES; #elif defined(OMIM_OS_MOBILE) glGenVertexArraysFn = &glGenVertexArraysOES; glBindVertexArrayFn = &glBindVertexArrayOES; @@ -257,7 +270,7 @@ void GLFunctions::glDisable(glConst mode) void GLFunctions::glClearDepthValue(double depth) { -#ifdef OMIM_OS_IPHONE +#if defined(OMIM_OS_IPHONE) || defined(OMIM_OS_ANDROID) GLCHECK(::glClearDepthf(static_cast<GLclampf>(depth))); #else GLCHECK(::glClearDepth(depth)); diff --git a/drape/glfunctions.hpp b/drape/glfunctions.hpp index 5dbc544a30..1028a72476 100644 --- a/drape/glfunctions.hpp +++ b/drape/glfunctions.hpp @@ -116,5 +116,10 @@ public: void CheckGLError(); -#define GLCHECK(x) do { (x); CheckGLError(); } while (false) -#define GLCHECKCALL() do { CheckGLError(); } while (false) +#ifdef DEBUG + #define GLCHECK(x) do { (x); CheckGLError(); } while (false) + #define GLCHECKCALL() do { CheckGLError(); } while (false) +#else + #define GLCHECK(x) (x) + #define GLCHECKCALL() +#endif diff --git a/drape/glyph_manager.cpp b/drape/glyph_manager.cpp index d1640318bf..3ab6f7fd62 100644 --- a/drape/glyph_manager.cpp +++ b/drape/glyph_manager.cpp @@ -26,7 +26,9 @@ { int m_code; char const * m_message; - } g_FT_Errors[] + }; + + FreetypeError g_FT_Errors[] = #include FT_ERRORS_H #define FREETYPE_CHECK(x) \ diff --git a/drape/utils/projection.cpp b/drape/utils/projection.cpp new file mode 100644 index 0000000000..ba7c30c11a --- /dev/null +++ b/drape/utils/projection.cpp @@ -0,0 +1,23 @@ +#include "projection.hpp" + +namespace dp +{ + +void MakeProjection(array<float, 16> & result, float left, float right, float bottom, float top) +{ + result.fill(0.0f); + + float width = right - left; + float height = top - bottom; + float depth = maxDepth - minDepth; + + result[0] = 2.0f / width; + result[3] = -(right + left) / width; + result[5] = 2.0f / height; + result[7] = -(top + bottom) / height; + result[10] = -2.0f / depth; + result[11] = -(maxDepth + minDepth) / depth; + result[15] = 1.0; +} + +} // namespace dp diff --git a/drape/utils/projection.hpp b/drape/utils/projection.hpp new file mode 100644 index 0000000000..cee2b20c96 --- /dev/null +++ b/drape/utils/projection.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "../../std/array.hpp" + +namespace dp +{ + static float const minDepth = -20000.0f; + static float const maxDepth = 20000.0f; + + void MakeProjection(array<float, 16> & result, float left, float right, float bottom, float top); +} // namespace dp diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index 2a85a282be..83e315085d 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -16,6 +16,7 @@ #include "drape/color.hpp" #include "drape/stipple_pen_resource.hpp" +#include "drape/utils/projection.hpp" #include "graphics/defines.hpp" @@ -146,8 +147,8 @@ ApplyPointFeature::ApplyPointFeature(EngineContext & context, TileKey tileKey, FeatureID const & id, CaptionDescription const & captions) : TBase(context, tileKey, id, captions) , m_hasPoint(false) - , m_symbolDepth(graphics::minDepth) - , m_circleDepth(graphics::minDepth) + , m_symbolDepth(dp::minDepth) + , m_circleDepth(dp::minDepth) , m_symbolRule(NULL) , m_circleRule(NULL) { diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 13218f7249..8d0c1ccb27 100644 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -2,12 +2,14 @@ #include "drape_frontend/message_subclasses.hpp" #include "drape_frontend/visual_params.hpp" +#include "drape/utils/projection.hpp" + +#include "geometry/any_rect2d.hpp" + #include "base/timer.hpp" #include "base/assert.hpp" #include "base/stl_add.hpp" -#include "geometry/any_rect2d.hpp" - #include "std/bind.hpp" #include "std/cmath.hpp" @@ -25,18 +27,6 @@ const double VSyncInterval = 0.014; //const double InitAvarageTimePerMessage = 0.001; #endif -void OrthoMatrix(float * m, float left, float right, float bottom, float top, float nearClip, float farClip) -{ - memset(m, 0, 16 * sizeof(float)); - m[0] = 2.0f / (right - left); - m[3] = - (right + left) / (right - left); - m[5] = 2.0f / (top - bottom); - m[7] = - (top + bottom) / (top - bottom); - m[10] = -2.0f / (farClip - nearClip); - m[11] = - (farClip + nearClip) / (farClip - nearClip); - m[15] = 1.0; -} - } // namespace FrontendRenderer::FrontendRenderer(dp::RefPointer<ThreadsCommutator> commutator, @@ -230,10 +220,10 @@ void FrontendRenderer::RenderScene() void FrontendRenderer::RefreshProjection() { - float m[4*4]; + array<float, 16> m; - OrthoMatrix(m, 0.0f, m_viewport.GetWidth(), m_viewport.GetHeight(), 0.0f, -20000.0f, 20000.0f); - m_generalUniforms.SetMatrix4x4Value("projection", m); + dp::MakeProjection(m, 0.0f, m_viewport.GetWidth(), m_viewport.GetHeight(), 0.0f); + m_generalUniforms.SetMatrix4x4Value("projection", m.data()); } void FrontendRenderer::RefreshModelView() diff --git a/drape_frontend/text_layout.cpp b/drape_frontend/text_layout.cpp index 2dd0b13cf4..97cc20d928 100644 --- a/drape_frontend/text_layout.cpp +++ b/drape_frontend/text_layout.cpp @@ -71,6 +71,8 @@ public: void operator()(dp::TextureManager::GlyphRegion const & glyph) { + if (!glyph.IsValid()) + return; m2::PointF pixelSize = m2::PointF(glyph.GetPixelSize()) * m_textRatio; float const xOffset = glyph.GetOffsetX() * m_textRatio; @@ -223,9 +225,12 @@ void CalculateOffsets(dp::Anchor anchor, ASSERT_NOT_EQUAL(start, end, ()); lengthAndHeight.push_back(TLengthAndHeight(0, 0)); TLengthAndHeight & node = lengthAndHeight.back(); - for (size_t glyphIndex = start; glyphIndex < end; ++glyphIndex) + for (size_t glyphIndex = start; glyphIndex < end && glyphIndex < glyphs.size(); ++glyphIndex) { dp::TextureManager::GlyphRegion const & glyph = glyphs[glyphIndex]; + if (!glyph.IsValid()) + continue; + node.first += (glyph.GetAdvanceX() * textRatio); node.second = max(node.second, (glyph.GetPixelHeight() + glyph.GetAdvanceY()) * textRatio); } @@ -313,7 +318,7 @@ void StraightTextLayout::Cache(glm::vec3 const & pivot, glm::vec2 const & pixelO size_t endOffset = node.first; StraigthTextGeometryGenerator generator(pivot, pixelOffset + node.second, m_textSizeRatio, colorRegion, outlineRegion, staticBuffer, dynamicBuffer); - for (size_t index = beginOffset; index < endOffset; ++index) + for (size_t index = beginOffset; index < endOffset && index < m_metrics.size(); ++index) generator(m_metrics[index]); beginOffset = endOffset; diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp index 1ee4643f5b..2da4abf3e5 100644 --- a/drape_frontend/text_shape.cpp +++ b/drape_frontend/text_shape.cpp @@ -105,10 +105,12 @@ void TextShape::Draw(dp::RefPointer<dp::Batcher> batcher, dp::RefPointer<dp::Tex secondaryOffset += glsl::vec2(0.0, secondaryLayout.GetPixelSize().y / 2.0f); } - DrawSubString(secondaryLayout, m_params.m_secondaryTextFont, secondaryOffset, batcher, textures); + if (secondaryLayout.GetGlyphCount() > 0) + DrawSubString(secondaryLayout, m_params.m_secondaryTextFont, secondaryOffset, batcher, textures); } - DrawSubString(primaryLayout, m_params.m_primaryTextFont, primaryOffset, batcher, textures); + if (primaryLayout.GetGlyphCount() > 0) + DrawSubString(primaryLayout, m_params.m_primaryTextFont, primaryOffset, batcher, textures); } void TextShape::DrawSubString(StraightTextLayout const & layout, diff --git a/drape_head/drape_surface.cpp b/drape_head/drape_surface.cpp index c1c431ebfa..2f3fa956ba 100644 --- a/drape_head/drape_surface.cpp +++ b/drape_head/drape_surface.cpp @@ -18,8 +18,7 @@ DrapeSurface::DrapeSurface() : m_dragState(false) - , m_navigator(m_scales) - , m_contextFactory(NULL) + , m_contextFactory(nullptr) { setSurfaceType(QSurface::OpenGLSurface); diff --git a/drape_head/drape_surface.hpp b/drape_head/drape_surface.hpp index 7bf939fcb2..0c2e371f8e 100644 --- a/drape_head/drape_surface.hpp +++ b/drape_head/drape_surface.hpp @@ -5,8 +5,6 @@ #include "map/feature_vec_model.hpp" #include "map/navigator.hpp" -#include "render/scales_processor.hpp" - #include "drape/batcher.hpp" #include "drape/gpu_program_manager.hpp" #include "drape/uniform_values_storage.hpp" @@ -48,7 +46,6 @@ private: bool m_dragState; - ScalesProcessor m_scales; model::FeaturesFetcher m_model; Navigator m_navigator; diff --git a/drape_head/mainwindow.cpp b/drape_head/mainwindow.cpp index 96e56f479b..dace369169 100644 --- a/drape_head/mainwindow.cpp +++ b/drape_head/mainwindow.cpp @@ -6,7 +6,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) - , m_surface(NULL) + , m_surface(nullptr) { resize(1200, 800); diff --git a/drape_head/testing_engine.cpp b/drape_head/testing_engine.cpp index 49676a8b88..17e89f10c5 100644 --- a/drape_head/testing_engine.cpp +++ b/drape_head/testing_engine.cpp @@ -3,13 +3,6 @@ #include "coding/file_reader.hpp" #include "platform/platform.hpp" -#include "drape/utils/vertex_decl.hpp" -#include "drape/glsl_types.hpp" -#include "drape/vertex_array_buffer.hpp" -#include "drape/shader_def.hpp" -#include "drape/overlay_tree.hpp" -#include "drape/stipple_pen_resource.hpp" - #include "drape_frontend/visual_params.hpp" #include "drape_frontend/line_shape.hpp" #include "drape_frontend/text_shape.hpp" @@ -18,6 +11,14 @@ #include "drape_frontend/area_shape.hpp" #include "drape_frontend/circle_shape.hpp" +#include "drape/utils/vertex_decl.hpp" +#include "drape/glsl_types.hpp" +#include "drape/vertex_array_buffer.hpp" +#include "drape/shader_def.hpp" +#include "drape/overlay_tree.hpp" +#include "drape/stipple_pen_resource.hpp" +#include "drape/utils/projection.hpp" + #include "geometry/transformations.hpp" #include "base/stl_add.hpp" @@ -495,19 +496,10 @@ void TestingEngine::ProjectionInit() float const right = left + m_viewport.GetWidth(); float const bottom = m_viewport.GetY0() + m_viewport.GetHeight(); float const top = m_viewport.GetY0(); - float const nearClip = -20000.0f; - float const farClip = 20000.0f; - - float m[4 * 4] = {0.}; - m[0] = 2.0f / (right - left); - m[3] = - (right + left) / (right - left); - m[5] = 2.0f / (top - bottom); - m[7] = - (top + bottom) / (top - bottom); - m[10] = -2.0f / (farClip - nearClip); - m[11] = - (farClip + nearClip) / (farClip - nearClip); - m[15] = 1.0; - - m_generalUniforms.SetMatrix4x4Value("projection", m); + + array<float, 16> m; + dp::MakeProjection(m, left, right, bottom, top); + m_generalUniforms.SetMatrix4x4Value("projection", m.data()); } void TestingEngine::OnFlushData(dp::GLState const & state, dp::TransferPointer<dp::RenderBucket> vao) diff --git a/iphone/Maps/Bookmarks/BookmarksVC.mm b/iphone/Maps/Bookmarks/BookmarksVC.mm index a7c1f68340..6c162e37d8 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.mm +++ b/iphone/Maps/Bookmarks/BookmarksVC.mm @@ -166,8 +166,9 @@ extern NSString * const kBookmarksChangedNotification = @"BookmarksChangedNotifi cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ %@", L(@"length"), [NSString stringWithUTF8String:dist.c_str()]]; else cell.detailTextLabel.text = nil; - const graphics::Color c = tr->GetMainColor(); - cell.imageView.image = [CircleView createCircleImageWith:PINDIAMETER andColor:[UIColor colorWithRed:c.r/255.f green:c.g/255.f blue:c.b/255.f alpha:1.f]]; + const dp::Color c = tr->GetMainColor(); + cell.imageView.image = [CircleView createCircleImageWith:PINDIAMETER andColor:[UIColor colorWithRed:c.GetRed()/255.f green:c.GetGreen()/255.f + blue:c.GetBlue()/255.f alpha:1.f]]; } // Contains bookmarks list else if (indexPath.section == m_bookmarkSection) diff --git a/iphone/Maps/Classes/EAGLView.h b/iphone/Maps/Classes/EAGLView.h index 04c7e16a6f..c8adc52353 100644 --- a/iphone/Maps/Classes/EAGLView.h +++ b/iphone/Maps/Classes/EAGLView.h @@ -1,52 +1,21 @@ #import <UIKit/UIKit.h> -#include "std/shared_ptr.hpp" -#include "indexer/map_style.hpp" +#include "../../std/shared_ptr.hpp" +#include "../../indexer/map_style.hpp" +#include "../../drape/pointers.hpp" -#ifndef USE_DRAPE - -class VideoTimer; -class RenderPolicy; - -namespace iphone -{ - class RenderContext; - class RenderBuffer; -} - -namespace graphics -{ - namespace gl - { - class FrameBuffer; - } -} - -#else - -#include "drape/pointers.hpp" namespace dp { class OGLContextFactory; } -#endif - // This class wraps the CAEAGLLayer from CoreAnimation into a convenient UIView subclass. // The view content is basically an EAGL surface you render your OpenGL scene into. // Note that setting the view non-opaque will only work if the EAGL surface has an alpha channel. @interface EAGLView : UIView { -#ifndef USE_DRAPE - VideoTimer * videoTimer; - shared_ptr<iphone::RenderContext> renderContext; - shared_ptr<graphics::gl::FrameBuffer> frameBuffer; - shared_ptr<iphone::RenderBuffer> renderBuffer; - RenderPolicy * renderPolicy; -#else dp::MasterPointer<dp::OGLContextFactory> m_factory; -#endif // Do not call onSize from layoutSubViews when real size wasn't changed. // It's possible when we add/remove subviews (bookmark balloons) and it hangs the map without this check CGRect lastViewSize; diff --git a/iphone/Maps/Classes/EAGLView.mm b/iphone/Maps/Classes/EAGLView.mm index 0406a6d560..cef3ca5ef2 100644 --- a/iphone/Maps/Classes/EAGLView.mm +++ b/iphone/Maps/Classes/EAGLView.mm @@ -5,27 +5,14 @@ #import "MWMDirectionView.h" #include "Framework.h" - -#ifndef USE_DRAPE - #include "RenderBuffer.hpp" - #include "RenderContext.hpp" - #include "graphics/resource_manager.hpp" - #include "graphics/opengl/opengl.hpp" - #include "graphics/data_formats.hpp" - #include "indexer/classificator_loader.hpp" -#else - #import "../Platform/opengl/iosOGLContextFactory.h" -#endif - -#include "render/render_policy.hpp" +#include "indexer/classificator_loader.hpp" +#import "../Platform/opengl/iosOGLContextFactory.h" #include "platform/platform.hpp" -#include "platform/video_timer.hpp" #include "std/bind.hpp" #include "std/limits.hpp" - @implementation EAGLView namespace @@ -106,26 +93,8 @@ graphics::EDensity getDensityType(int exactDensityDPI, double scale) // Correct retina display support in opengl renderbuffer self.contentScaleFactor = [self correctContentScale]; -#ifndef USE_DRAPE - renderContext = shared_ptr<iphone::RenderContext>(new iphone::RenderContext()); - - if (!renderContext.get()) - { - NSLog(@"EAGLView initWithCoder Error"); - return nil; - } - - renderContext->makeCurrent(); - - typedef void (*drawFrameFn)(id, SEL); - SEL drawFrameSel = @selector(drawFrame); - drawFrameFn drawFrameImpl = (drawFrameFn)[self methodForSelector:drawFrameSel]; - - videoTimer = CreateIOSVideoTimer(bind(drawFrameImpl, self, drawFrameSel)); -#else dp::ThreadSafeFactory * factory = new dp::ThreadSafeFactory(new iosOGLContextFactory(eaglLayer)); m_factory.Reset(factory); -#endif } NSLog(@"EAGLView initWithCoder Ended"); @@ -135,50 +104,9 @@ graphics::EDensity getDensityType(int exactDensityDPI, double scale) - (void)initRenderPolicy { NSLog(@"EAGLView initRenderPolicy Started"); - -#ifndef USE_DRAPE - int const dpi = static_cast<int>(getExactDPI()); - - graphics::ResourceManager::Params rmParams; - rmParams.m_videoMemoryLimit = GetPlatform().VideoMemoryLimit(); - rmParams.m_texFormat = graphics::Data4Bpp; - rmParams.m_exactDensityDPI = dpi; - - RenderPolicy::Params rpParams; - UIScreen * screen = [UIScreen mainScreen]; - CGRect screenRect = screen.bounds; - - double vs = self.contentScaleFactor; - - rpParams.m_screenWidth = screenRect.size.width * vs; - rpParams.m_screenHeight = screenRect.size.height * vs; - rpParams.m_skinName = "basic.skn"; - rpParams.m_density = getDensityType(dpi, vs); - rpParams.m_exactDensityDPI = dpi; - rpParams.m_videoTimer = videoTimer; - rpParams.m_useDefaultFB = false; - rpParams.m_rmParams = rmParams; - rpParams.m_primaryRC = renderContext; - - try - { - renderPolicy = CreateRenderPolicy(rpParams); - } - catch (graphics::gl::platform_unsupported const & ) - { - /// terminate program (though this situation is unreal :) ) - } - - frameBuffer = renderPolicy->GetDrawer()->Screen()->frameBuffer(); - - Framework & f = GetFramework(); - f.SetRenderPolicy(renderPolicy); - f.InitGuiSubsystem(); -#else CGRect frameRect = [UIScreen mainScreen].applicationFrame; GetFramework().CreateDrapeEngine(m_factory.GetRefPointer(), self.contentScaleFactor, frameRect.size.width, frameRect.size.height); -#endif NSLog(@"EAGLView initRenderPolicy Ended"); } @@ -198,67 +126,12 @@ graphics::EDensity getDensityType(int exactDensityDPI, double scale) - (void)setMapStyle:(MapStyle)mapStyle { - Framework & f = GetFramework(); - - if (f.GetMapStyle() == mapStyle) - return; - - NSLog(@"EAGLView setMapStyle Started"); - - renderContext->makeCurrent(); - - /// drop old render policy - f.SetRenderPolicy(nullptr); - frameBuffer.reset(); - - f.SetMapStyle(mapStyle); - - /// init new render policy - [self initRenderPolicy]; - - /// restore render policy screen - CGFloat const scale = self.contentScaleFactor; - CGSize const s = self.bounds.size; - [self onSize:s.width * scale withHeight:s.height * scale]; - - /// update framework - f.SetUpdatesEnabled(true); - - NSLog(@"EAGLView setMapStyle Ended"); + //@TODO UVR } - (void)onSize:(int)width withHeight:(int)height { -#ifndef USE_DRAPE - frameBuffer->onSize(width, height); - - graphics::Screen * screen = renderPolicy->GetDrawer()->Screen(); - - /// free old render buffer, as we would not create a new one. - screen->resetRenderTarget(); - screen->resetDepthBuffer(); - renderBuffer.reset(); - - /// detaching of old render target will occur inside beginFrame - screen->beginFrame(); - screen->endFrame(); - - /// allocate the new one - renderBuffer.reset(); - renderBuffer.reset(new iphone::RenderBuffer(renderContext, (CAEAGLLayer*)self.layer)); - - screen->setRenderTarget(renderBuffer); - screen->setDepthBuffer(make_shared<graphics::gl::RenderBuffer>(width, height, true)); -#endif - GetFramework().OnSize(width, height); - -#ifndef USE_DRAPE - screen->beginFrame(); - screen->clear(graphics::Screen::s_bgColor); - screen->endFrame(); - GetFramework().SetNeedRedraw(true); -#endif } - (double)correctContentScale @@ -270,52 +143,20 @@ graphics::EDensity getDensityType(int exactDensityDPI, double scale) return uiScreen.nativeScale; } -#ifndef USE_DRAPE -- (void)drawFrame -{ - shared_ptr<PaintEvent> pe(new PaintEvent(renderPolicy->GetDrawer().get())); - - Framework & f = GetFramework(); - if (f.NeedRedraw()) - { - // Workaround. iOS Voice recognition creates own OGL-context, so here we must set ours - // (http://discuss.cocos2d-x.org/t/engine-crash-on-ios7/9129/6) - [EAGLContext setCurrentContext:renderContext->getEAGLContext()]; - - f.SetNeedRedraw(false); - f.BeginPaint(pe); - f.DoPaint(pe); - renderBuffer->present(); - f.EndPaint(pe); - } -} -#endif - - (void)layoutSubviews { if (!CGRectEqualToRect(lastViewSize, self.frame)) { lastViewSize = self.frame; -#ifndef USE_DRAPE - CGFloat const scale = self.contentScaleFactor; - CGSize const s = self.bounds.size; - [self onSize:s.width * scale withHeight:s.height * scale]; -#else CGSize const s = self.bounds.size; [self onSize:s.width withHeight:s.height]; -#endif } } - (void)dealloc { -#ifndef USE_DRAPE - delete videoTimer; - [EAGLContext setCurrentContext:nil]; -#else GetFramework().PrepareToShutdown(); m_factory.Destroy(); -#endif } - (CGPoint)viewPoint2GlobalPoint:(CGPoint)pt diff --git a/iphone/Maps/Classes/LocationPredictor.mm b/iphone/Maps/Classes/LocationPredictor.mm index 2fed7c2f83..38a210fcb6 100644 --- a/iphone/Maps/Classes/LocationPredictor.mm +++ b/iphone/Maps/Classes/LocationPredictor.mm @@ -34,14 +34,15 @@ namespace m_gpsInfoIsValid = false; m_generatePredictions = false; - m_connectionSlot = GetFramework().GetLocationState()->AddStateModeListener([self](location::State::Mode mode) - { - m_generatePredictions = (mode == location::State::RotateAndFollow); - if (mode < location::State::NotFollow) - m_gpsInfoIsValid = false; - - [self resetTimer]; - }); + //@TODO UVR + //m_connectionSlot = GetFramework().GetLocationState()->AddStateModeListener([self](location::State::Mode mode) + //{ + // m_generatePredictions = (mode == location::State::RotateAndFollow); + // if (mode < location::State::NotFollow) + // m_gpsInfoIsValid = false; + + // [self resetTimer]; + //}); } return self; @@ -49,7 +50,7 @@ namespace -(void)dealloc { - GetFramework().GetLocationState()->RemoveStateModeListener(m_connectionSlot); + //GetFramework().GetLocationState()->RemoveStateModeListener(m_connectionSlot); } -(void)reset:(location::GpsInfo const &)info diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 821d94dfb1..4fba52455b 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -18,10 +18,9 @@ #import "3party/Alohalytics/src/alohalytics_objc.h" #include "Framework.h" -#include "RenderContext.hpp" #include "anim/controller.hpp" -#include "gui/controller.hpp" +#include "../Statistics/Statistics.h" #include "map/country_status_display.hpp" #include "map/user_mark.hpp" @@ -323,8 +322,8 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) if ([event allTouches].count == 1) { - if (f.GetGuiController()->OnTapStarted(m_Pt1)) - return; + //if (f.GetGuiController()->OnTapStarted(m_Pt1)) + // return; self.userTouchesAction = UserTouchesActionDrag; // Start long-tap timer @@ -363,8 +362,9 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) Framework & f = GetFramework(); - if (f.GetGuiController()->OnTapMoved(m_Pt1)) - return; + ///@TODO UVR +// if (f.GetGuiController()->OnTapMoved(m_Pt1)) +// return; if (m_isSticking) { @@ -424,8 +424,9 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) // TapCount could be zero if it was a single long (or moving) tap. if (tapCount < 2) { - if (f.GetGuiController()->OnTapEnded(m_Pt1)) - return; + ///@TODO UVR +// if (f.GetGuiController()->OnTapEnded(m_Pt1)) +// return; } if (tapCount == 1) @@ -649,8 +650,8 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) SEL locationStateModeSelector = @selector(onLocationStateModeChanged:); LocationStateModeFnT locationStateModeFn = (LocationStateModeFnT)[self methodForSelector:locationStateModeSelector]; - f.GetLocationState()->AddStateModeListener(bind(locationStateModeFn, self, locationStateModeSelector, _1)); - + ///@TODO UVR +// f.GetLocationState()->AddStateModeListener(bind(locationStateModeFn, self, locationStateModeSelector, _1)); m_predictor = [[LocationPredictor alloc] initWithObserver:self]; m_StickyThreshold = 10; @@ -663,10 +664,12 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) if (!f.LoadState()) f.SetMaxWorldRect(); - f.Invalidate(); + ///@TODO UVR + //f.Invalidate(); f.LoadBookmarks(); - f.GetCountryStatusDisplay()->SetDownloadCountryListener([self, &f](storage::TIndex const & idx, int opt) + ///@TODO UVR + //f.GetCountryStatusDisplay()->SetDownloadCountryListener([self, &f](storage::TIndex const & idx, int opt) { ActiveMapsLayout & layout = f.GetCountryTree().GetActiveMapLayout(); if (opt == -1) @@ -702,7 +705,7 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) layout.DownloadMap(idx, static_cast<MapOptions>(opt)); } - }); + });*/ f.SetRouteBuildingListener([self, &f](routing::IRouter::ResultCode code, vector<storage::TIndex> const & absentCountries, vector<storage::TIndex> const & absentRoutes) { @@ -876,6 +879,102 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) return _alertController; } +#pragma mark - Map state + +- (void)checkCurrentLocationMap +{ + Framework & f = GetFramework(); + ActiveMapsLayout & activeMapLayout = f.GetCountryTree().GetActiveMapLayout(); + int const mapsCount = activeMapLayout.GetCountInGroup(ActiveMapsLayout::TGroup::EOutOfDate) + activeMapLayout.GetCountInGroup(ActiveMapsLayout::TGroup::EUpToDate); + self.haveMap = mapsCount > 0; +} + +#pragma mark - SearchViewDelegate + +- (void)searchViewWillEnterState:(SearchViewState)state +{ + [self checkCurrentLocationMap]; + switch (state) + { + case SearchViewStateHidden: + self.controlsManager.hidden = NO; + break; + case SearchViewStateResults: + self.controlsManager.hidden = NO; + break; + case SearchViewStateAlpha: + self.controlsManager.hidden = NO; + break; + case SearchViewStateFullscreen: + self.controlsManager.hidden = YES; + GetFramework().ActivateUserMark(NULL); + break; + } +} + +- (void)searchViewDidEnterState:(SearchViewState)state +{ + switch (state) + { + case SearchViewStateResults: + [self setMapInfoViewFlag:MapInfoViewSearch]; + break; + case SearchViewStateHidden: + case SearchViewStateAlpha: + case SearchViewStateFullscreen: + [self clearMapInfoViewFlag:MapInfoViewSearch]; + break; + } + [self updateStatusBarStyle]; +} + +#pragma mark - MWMNavigationDelegate + +- (void)pushDownloadMaps +{ + [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"downloader"]; + CountryTreeVC * vc = [[CountryTreeVC alloc] initWithNodePosition:-1]; + [self.navigationController pushViewController:vc animated:YES]; +} + +#pragma mark - MWMPlacePageViewManagerDelegate + +- (void)addPlacePageViews:(NSArray *)views +{ + [views enumerateObjectsUsingBlock:^(UIView * view, NSUInteger idx, BOOL *stop) + { + if ([self.view.subviews containsObject:view]) + return; + [self.view insertSubview:view belowSubview:self.searchView]; + }]; +} + +#pragma mark - ActiveMapsObserverProtocol + +- (void)countryStatusChangedAtPosition:(int)position inGroup:(ActiveMapsLayout::TGroup const &)group +{ + auto const status = GetFramework().GetCountryTree().GetActiveMapLayout().GetCountryStatus(group, position); + if (status == TStatus::EDownloadFailed) + { + [self.searchView downloadFailed]; + } + else if (status == TStatus::EOnDisk) + { + [self checkCurrentLocationMap]; + [self.searchView downloadComplete]; + } +} + +- (void)countryDownloadingProgressChanged:(LocalAndRemoteSizeT const &)progress atPosition:(int)position inGroup:(ActiveMapsLayout::TGroup const &)group +{ + //if (self.searchView.state != SearchViewStateFullscreen) + // return; + //CGFloat const normProgress = (CGFloat)progress.first / (CGFloat)progress.second; + //ActiveMapsLayout & activeMapLayout = GetFramework().GetCountryTree().GetActiveMapLayout(); + //NSString * countryName = [NSString stringWithUTF8String:activeMapLayout.GetFormatedCountryName(activeMapLayout.GetCoreIndex(group, position)).c_str()]; + //[self.searchView downloadProgress:normProgress countryName:countryName]; +} + #pragma mark - Public methods - (void)setupMeasurementSystem @@ -892,9 +991,10 @@ NSInteger compareAddress(id l, id r, void * context) - (void)invalidate { - Framework & f = GetFramework(); - if (!f.SetUpdatesEnabled(true)) - f.Invalidate(); + ///@TODO UVR +// Framework & f = GetFramework(); +// if (!f.SetUpdatesEnabled(true)) +// f.Invalidate(); } - (void)destroyPopover diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index a83b338ed1..ce4f98d189 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -622,8 +622,6 @@ EE026F0611D6AC0D00645242 /* classificator.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE026F0511D6AC0D00645242 /* classificator.txt */; }; EE164811135CEE4A003B8A3E /* 06_code2000.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EE164810135CEE49003B8A3E /* 06_code2000.ttf */; }; EE583CBB12F773F00042CBE3 /* unicode_blocks.txt in Resources */ = {isa = PBXBuildFile; fileRef = EE583CBA12F773F00042CBE3 /* unicode_blocks.txt */; }; - EE7F29811219ECA300EB67A9 /* RenderBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = EE7F297D1219ECA300EB67A9 /* RenderBuffer.mm */; }; - EE7F29821219ECA300EB67A9 /* RenderContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = EE7F297E1219ECA300EB67A9 /* RenderContext.mm */; }; EEA61601134C496A003A9827 /* 01_dejavusans.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E5134C4968003A9827 /* 01_dejavusans.ttf */; }; EEA61603134C496A003A9827 /* 03_jomolhari-id-a3d.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E7134C4968003A9827 /* 03_jomolhari-id-a3d.ttf */; }; EEA61604134C496A003A9827 /* 04_padauk.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EEA615E8134C4968003A9827 /* 04_padauk.ttf */; }; @@ -1167,12 +1165,17 @@ ED48BBB817C2B1E2003E7E92 /* CircleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleView.h; sourceTree = "<group>"; }; ED48BBB917C2B1E2003E7E92 /* CircleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CircleView.mm; sourceTree = "<group>"; }; EE026F0511D6AC0D00645242 /* classificator.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = classificator.txt; path = ../../data/classificator.txt; sourceTree = SOURCE_ROOT; }; - EE16192B126E374500622BD0 /* RenderContext.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; name = RenderContext.hpp; path = Classes/RenderContext.hpp; sourceTree = SOURCE_ROOT; }; + EE1201FF11CD464100ABDD5D /* libbase.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libbase.a; sourceTree = SOURCE_ROOT; }; + EE12020011CD464100ABDD5D /* libcoding.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcoding.a; sourceTree = SOURCE_ROOT; }; + EE12020211CD464100ABDD5D /* libexpat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libexpat.a; sourceTree = SOURCE_ROOT; }; + EE12020311CD464100ABDD5D /* libfreetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libfreetype.a; sourceTree = SOURCE_ROOT; }; + EE12020411CD464100ABDD5D /* libgeometry.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgeometry.a; sourceTree = SOURCE_ROOT; }; + EE12020511CD464100ABDD5D /* libindexer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libindexer.a; sourceTree = SOURCE_ROOT; }; + EE12020611CD464100ABDD5D /* libmap.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libmap.a; sourceTree = SOURCE_ROOT; }; + EE12020811CD464100ABDD5D /* libgraphics.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgraphics.a; sourceTree = SOURCE_ROOT; }; EE164810135CEE49003B8A3E /* 06_code2000.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = 06_code2000.ttf; path = ../../data/06_code2000.ttf; sourceTree = SOURCE_ROOT; }; EE583CBA12F773F00042CBE3 /* unicode_blocks.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = unicode_blocks.txt; path = ../../data/unicode_blocks.txt; sourceTree = "<group>"; }; - EE7F297C1219ECA300EB67A9 /* RenderBuffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; lineEnding = 0; name = RenderBuffer.hpp; path = Classes/RenderBuffer.hpp; sourceTree = SOURCE_ROOT; }; - EE7F297D1219ECA300EB67A9 /* RenderBuffer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; name = RenderBuffer.mm; path = Classes/RenderBuffer.mm; sourceTree = SOURCE_ROOT; }; - EE7F297E1219ECA300EB67A9 /* RenderContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; name = RenderContext.mm; path = Classes/RenderContext.mm; sourceTree = SOURCE_ROOT; }; + EE5A34E5156FCB9500E34FFE /* libgui.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgui.a; sourceTree = SOURCE_ROOT; }; EEA615E5134C4968003A9827 /* 01_dejavusans.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = 01_dejavusans.ttf; path = ../../data/01_dejavusans.ttf; sourceTree = SOURCE_ROOT; }; EEA615E7134C4968003A9827 /* 03_jomolhari-id-a3d.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "03_jomolhari-id-a3d.ttf"; path = "../../data/03_jomolhari-id-a3d.ttf"; sourceTree = SOURCE_ROOT; }; EEA615E8134C4968003A9827 /* 04_padauk.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = 04_padauk.ttf; path = ../../data/04_padauk.ttf; sourceTree = SOURCE_ROOT; }; @@ -1592,10 +1595,6 @@ B0FBFA2A1A515B4C0086819E /* TableViewController.mm */, 978F9251183BD530000D6C7C /* NavigationController.h */, 978F9252183BD530000D6C7C /* NavigationController.mm */, - EE7F297C1219ECA300EB67A9 /* RenderBuffer.hpp */, - EE7F297D1219ECA300EB67A9 /* RenderBuffer.mm */, - EE16192B126E374500622BD0 /* RenderContext.hpp */, - EE7F297E1219ECA300EB67A9 /* RenderContext.mm */, 46F26CD610F623BA00ECCA39 /* EAGLView.h */, 46F26CD710F623BA00ECCA39 /* EAGLView.mm */, 1D3623240D0F684500981E51 /* MapsAppDelegate.h */, @@ -1680,7 +1679,6 @@ 34921F691BFA0CDC00737D6E /* MyTargetSDKCorp.framework */, 6741AAA21BF356B9002C974C /* libagg.a */, 6741AAA31BF356B9002C974C /* libalohalitics.a */, - 6741AAA41BF356B9002C974C /* libanim.a */, 6741AAA51BF356B9002C974C /* libapi.a */, 6741AAA61BF356B9002C974C /* libbase.a */, 6741AAA71BF356B9002C974C /* libcoding.a */, @@ -1688,8 +1686,6 @@ 6741AAA91BF356B9002C974C /* libfreetype.a */, 6741AAAA1BF356B9002C974C /* libfribidi.a */, 6741AAAB1BF356B9002C974C /* libgeometry.a */, - 6741AAAC1BF356B9002C974C /* libgraphics.a */, - 6741AAAD1BF356B9002C974C /* libgui.a */, 6741AAAE1BF356B9002C974C /* libindexer.a */, 6741AAAF1BF356B9002C974C /* libjansson.a */, 6741AAB01BF356B9002C974C /* liblodepng.a */, @@ -1699,7 +1695,6 @@ 6741AAB41BF356B9002C974C /* libosrm.a */, 6741AAB51BF356B9002C974C /* libplatform.a */, 6741AAB61BF356BA002C974C /* libprotobuf.a */, - 6741AAB71BF356BA002C974C /* librender.a */, 6741AAB81BF356BA002C974C /* librouting.a */, 6741AAB91BF356BA002C974C /* libsearch.a */, 6741AABA1BF356BA002C974C /* libstorage.a */, @@ -3401,7 +3396,6 @@ F61579341AC2CE9A0032D8E9 /* MWMRateAlert.mm in Sources */, F6BB6CC61BB18C0900DF1DF2 /* MWMRoutePointCell.m in Sources */, A3CC2CD41A1C723900B832E1 /* LocationPredictor.mm in Sources */, - EE7F29811219ECA300EB67A9 /* RenderBuffer.mm in Sources */, 6C93FAEC1AD8063900A2C4AE /* MWMWatchNotification.mm in Sources */, F62404FB1AAF3DB200B58DB6 /* UILabel+RuntimeAttributes.mm in Sources */, 34CC4C0E1B82069C00E44C1F /* MWMSearchTabbedCollectionViewCell.mm in Sources */, @@ -3422,6 +3416,7 @@ 34CFFE8B1B7DE6FD009D0C9F /* MWMSearchManager.mm in Sources */, F6BBF2C61B4FFB72000CF8E2 /* MWMLocationAlert.mm in Sources */, F66A8FB01B09F268001B9C97 /* MWMPlacePage.mm in Sources */, + 34BC72251B0DECAE0012A34B /* MWMSideMenuButton.mm in Sources */, EE7F29821219ECA300EB67A9 /* RenderContext.mm in Sources */, F6ED13911B1EF96B0095C6DE /* MWMBookmarkDescriptionViewController.mm in Sources */, 349A35851B53E967009677EE /* MWMDownloadMapRequestView.mm in Sources */, @@ -3963,43 +3958,6 @@ }; name = Debug; }; - 6741A8E61BF3407C002C974C /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IBSC_MODULE = maps_me_beta_WatchKit_Extension; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; - }; - name = "Drape Debug"; - }; 6741A8E71BF3407C002C974C /* AdHoc */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4075,43 +4033,6 @@ }; name = Release; }; - 6741A8E91BF3407C002C974C /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IBSC_MODULE = maps_me_beta_WatchKit_Extension; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; - }; - name = "Drape Release"; - }; 6741A8EA1BF3407C002C974C /* Production Full */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4201,23 +4122,6 @@ }; name = Debug; }; - 6741A9361BF340D1002C974C /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/Entitlements/me.maps.watchkitextension.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitextension"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - SKIP_INSTALL = YES; - }; - name = "Drape Debug"; - }; 6741A9371BF340D1002C974C /* AdHoc */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4253,23 +4157,6 @@ }; name = Release; }; - 6741A9391BF340D1002C974C /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/Entitlements/me.maps.watchkitextension.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitextension"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - SKIP_INSTALL = YES; - }; - name = "Drape Release"; - }; 6741A93A1BF340D1002C974C /* Production Full */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4383,38 +4270,6 @@ }; name = Debug; }; - 6741AA581BF340DE002C974C /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_ENTITLEMENTS = Entitlements/me.maps.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/PushNotifications", - "$(PROJECT_DIR)/Statistics", - "$(PROJECT_DIR)", - ); - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "$(SRCROOT)/MAPSME.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(PROJECT_DIR)/MyTracker", - "$(PROJECT_DIR)/Statistics", - ); - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - "-Wimplicit-retain-self", - ); - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - }; - name = "Drape Debug"; - }; 6741AA591BF340DE002C974C /* AdHoc */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4479,38 +4334,6 @@ }; name = Release; }; - 6741AA5B1BF340DE002C974C /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_ENTITLEMENTS = Entitlements/me.maps.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/PushNotifications", - "$(PROJECT_DIR)/Statistics", - "$(PROJECT_DIR)", - ); - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "$(SRCROOT)/MAPSME.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(PROJECT_DIR)/MyTracker", - "$(PROJECT_DIR)/Statistics", - ); - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - "-Wimplicit-retain-self", - ); - OTHER_LDFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = ""; - }; - name = "Drape Release"; - }; 6741AA5C1BF340DE002C974C /* Production Full */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4543,257 +4366,6 @@ }; name = "Production Full"; }; - A32B6D4E1A14A7B700E54A65 /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.release; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 5.2; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Statistics"; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_FAST_MATH = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_OPTIMIZATION_LEVEL = 3; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Maps_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - NDEBUG, - RELEASE, - _RELEASE, - TARGET_OS_IPHONE, - "NS_BLOCK_ASSERTIONS=1", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_UNROLL_LOOPS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_LABEL = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - ../../3party/boost, - ../../, - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../../../omim-iphone-release-drape-$(CURRENT_ARCH)/out/release\"", - "$(PROJECT_DIR)/MyTracker", - "$(PROJECT_DIR)/Statistics", - ); - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DUSE_DRAPE", - ); - OTHER_LDFLAGS = ( - "-lstats_client", - "-lmap", - "-lrender", - "-lsearch", - "-lgui", - "-ldrape_frontend", - "-ldrape", - "-lgraphics", - "-lstorage", - "-lrouting", - "-lindexer", - "-lanim", - "-lplatform", - "-lgeometry", - "-lcoding", - "-lbase", - "-lfreetype", - "-lfribidi", - "-lminizip", - "-ljansson", - "-ltomcrypt", - "-lexpat", - "-lprotobuf", - "-losrm", - "-lsuccinct", - "-ObjC", - "-lopening_hours", - ); - PRODUCT_NAME = "maps.me drape rel"; - SDKROOT = iphoneos; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Drape Release"; - }; - A32B6D4F1A14A7B700E54A65 /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_ENTITLEMENTS = Entitlements/me.maps.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/PushNotifications", - "$(PROJECT_DIR)/Statistics", - "$(PROJECT_DIR)", - ); - INFOPLIST_FILE = MAPSME.plist; - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - "-Wimplicit-retain-self", - ); - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_IDENTIFIER}"; - PROVISIONING_PROFILE = ""; - }; - name = "Drape Release"; - }; - A32B6D5F1A14C16500E54A65 /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - BUNDLE_IDENTIFIER = com.mapswithme.full.debug; - CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 5.2; - ENABLE_BITCODE = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/Statistics"; - GCC_ENABLE_PASCAL_STRINGS = NO; - GCC_FAST_MATH = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Maps_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - DEBUG, - _DEBUG, - TARGET_OS_IPHONE, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_LABEL = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ( - ../../3party/boost, - ../../, - ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../../../omim-iphone-debug-drape-$(CURRENT_ARCH)/out/debug\"", - "$(PROJECT_DIR)/MyTracker", - "$(PROJECT_DIR)/Statistics", - ); - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DUSE_DRAPE", - ); - OTHER_LDFLAGS = ( - "-lstats_client", - "-lmap", - "-lrender", - "-ldrape_frontend", - "-ldrape", - "-lsearch", - "-lgui", - "-lgraphics", - "-lstorage", - "-lrouting", - "-lindexer", - "-lanim", - "-lplatform", - "-lgeometry", - "-lcoding", - "-lbase", - "-lfreetype", - "-lfribidi", - "-lminizip", - "-ljansson", - "-ltomcrypt", - "-lexpat", - "-lprotobuf", - "-losrm", - "-lsuccinct", - "-ObjC", - "-lopening_hours", - ); - PRODUCT_NAME = "maps.me drape dbg"; - SDKROOT = iphoneos; - STRIP_INSTALLED_PRODUCT = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Drape Debug"; - }; - A32B6D601A14C16500E54A65 /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - CODE_SIGN_ENTITLEMENTS = Entitlements/me.maps.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/PushNotifications", - "$(PROJECT_DIR)/Statistics", - "$(PROJECT_DIR)", - ); - INFOPLIST_FILE = MAPSME.plist; - OTHER_CFLAGS = ( - "-Wall", - "-Wno-unused-local-typedef", - "-Wimplicit-retain-self", - ); - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_IDENTIFIER}"; - PROVISIONING_PROFILE = ""; - }; - name = "Drape Debug"; - }; F6D434601AD2AB97007C7728 /* Simulator */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4839,21 +4411,6 @@ }; name = Debug; }; - F6D434631AD2AB97007C7728 /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/Entitlements/me.maps.watchkitextension.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitextension"; - PRODUCT_NAME = "$(TARGET_NAME) WatchKit Extension"; - PROVISIONING_PROFILE = ""; - SKIP_INSTALL = YES; - }; - name = "Drape Debug"; - }; F6D434641AD2AB97007C7728 /* AdHoc */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4884,21 +4441,6 @@ }; name = Release; }; - F6D434661AD2AB97007C7728 /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = "maps.me WatchKit Extension/Entitlements/me.maps.watchkitextension.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit Extension/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - PRODUCT_BUNDLE_IDENTIFIER = "$(BUNDLE_IDENTIFIER).watchkitextension"; - PRODUCT_NAME = "$(TARGET_NAME) WatchKit Extension"; - PROVISIONING_PROFILE = ""; - SKIP_INSTALL = YES; - }; - name = "Drape Release"; - }; F6D434671AD2AB97007C7728 /* Production Full */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5030,42 +4572,6 @@ }; name = Debug; }; - F6D4346B1AD2AB97007C7728 /* Drape Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IBSC_MODULE = maps_me_beta_WatchKit_Extension; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_IDENTIFIER}.watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; - }; - name = "Drape Debug"; - }; F6D4346C1AD2AB97007C7728 /* AdHoc */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5138,42 +4644,6 @@ }; name = Release; }; - F6D4346E1AD2AB97007C7728 /* Drape Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IBSC_MODULE = maps_me_beta_WatchKit_Extension; - INFOPLIST_FILE = "$(SRCROOT)/maps.me WatchKit App/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "${BUNDLE_IDENTIFIER}.watchkitapp"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = 4; - "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4"; - }; - name = "Drape Release"; - }; F6D4346F1AD2AB97007C7728 /* Production Full */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5271,10 +4741,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5392,10 +4861,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5515,10 +4983,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5639,10 +5106,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5762,10 +5228,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5883,10 +5348,9 @@ OTHER_LDFLAGS = ( "-lstats_client", "-lmap", - "-lrender", "-lsearch", - "-lgui", - "-lgraphics", + "-ldrape_frontend", + "-ldrape", "-lstorage", "-lrouting", "-lindexer", @@ -5950,10 +5414,8 @@ FAAB411A149BA83500C245B1 /* Simulator */, FACFE54515F8F35600CE8B20 /* Simulator Release */, FAAB411C149BA84700C245B1 /* Debug */, - A32B6D601A14C16500E54A65 /* Drape Debug */, FAAB411E149BA85500C245B1 /* AdHoc */, FABB561F149CD957006969C0 /* Release */, - A32B6D4F1A14A7B700E54A65 /* Drape Release */, FAAB4120149BA86000C245B1 /* Production Full */, ); defaultConfigurationIsVisible = 0; @@ -5965,10 +5427,8 @@ 6741A8E31BF3407C002C974C /* Simulator */, 6741A8E41BF3407C002C974C /* Simulator Release */, 6741A8E51BF3407C002C974C /* Debug */, - 6741A8E61BF3407C002C974C /* Drape Debug */, 6741A8E71BF3407C002C974C /* AdHoc */, 6741A8E81BF3407C002C974C /* Release */, - 6741A8E91BF3407C002C974C /* Drape Release */, 6741A8EA1BF3407C002C974C /* Production Full */, ); defaultConfigurationIsVisible = 0; @@ -5980,10 +5440,8 @@ 6741A9331BF340D1002C974C /* Simulator */, 6741A9341BF340D1002C974C /* Simulator Release */, 6741A9351BF340D1002C974C /* Debug */, - 6741A9361BF340D1002C974C /* Drape Debug */, 6741A9371BF340D1002C974C /* AdHoc */, 6741A9381BF340D1002C974C /* Release */, - 6741A9391BF340D1002C974C /* Drape Release */, 6741A93A1BF340D1002C974C /* Production Full */, ); defaultConfigurationIsVisible = 0; @@ -5995,10 +5453,8 @@ 6741AA551BF340DE002C974C /* Simulator */, 6741AA561BF340DE002C974C /* Simulator Release */, 6741AA571BF340DE002C974C /* Debug */, - 6741AA581BF340DE002C974C /* Drape Debug */, 6741AA591BF340DE002C974C /* AdHoc */, 6741AA5A1BF340DE002C974C /* Release */, - 6741AA5B1BF340DE002C974C /* Drape Release */, 6741AA5C1BF340DE002C974C /* Production Full */, ); defaultConfigurationIsVisible = 0; @@ -6010,10 +5466,8 @@ FAAB4119149BA83500C245B1 /* Simulator */, FACFE54415F8F35600CE8B20 /* Simulator Release */, FAAB411B149BA84700C245B1 /* Debug */, - A32B6D5F1A14C16500E54A65 /* Drape Debug */, FAAB411D149BA85500C245B1 /* AdHoc */, FABB561E149CD957006969C0 /* Release */, - A32B6D4E1A14A7B700E54A65 /* Drape Release */, FAAB411F149BA86000C245B1 /* Production Full */, ); defaultConfigurationIsVisible = 0; diff --git a/iphone/Maps/Settings/SettingsViewController.mm b/iphone/Maps/Settings/SettingsViewController.mm index 7195f90460..5ab3f65882 100644 --- a/iphone/Maps/Settings/SettingsViewController.mm +++ b/iphone/Maps/Settings/SettingsViewController.mm @@ -62,7 +62,8 @@ typedef NS_ENUM(NSUInteger, Section) - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - GetFramework().Invalidate(true); + ///@TODO UVR + //GetFramework().Invalidate(true); } #pragma mark - Table view data source diff --git a/map/address_finder.cpp b/map/address_finder.cpp index 07c6950292..8d340122c6 100644 --- a/map/address_finder.cpp +++ b/map/address_finder.cpp @@ -1,6 +1,7 @@ #include "map/framework.hpp" #include "search/result.hpp" +#include "drape_frontend/visual_params.hpp" #include "indexer/classificator.hpp" #include "indexer/feature_visibility.hpp" @@ -164,7 +165,7 @@ namespace void Framework::GetFeatureTypes(m2::PointD const & pxPoint, vector<string> & types) const { m2::AnyRectD rect; - m_navigator.GetTouchRect(pxPoint, TOUCH_PIXEL_RADIUS * GetVisualScale(), rect); + m_navigator.GetTouchRect(pxPoint, TOUCH_PIXEL_RADIUS * df::VisualParams::Instance().GetVisualScale(), rect); // This scale should fit in geometry scales range. int const scale = min(GetDrawScale(), scales::GetUpperScale()); diff --git a/map/alfa_animation_task.cpp b/map/alfa_animation_task.cpp index 5a65277a7b..b9450f06b0 100644 --- a/map/alfa_animation_task.cpp +++ b/map/alfa_animation_task.cpp @@ -28,7 +28,8 @@ void AlfaAnimationTask::OnStart(double ts) { m_timeStart = ts; BaseT::OnStart(ts); - m_f->Invalidate(); + ///@TODO UVR + //m_f->Invalidate(); } void AlfaAnimationTask::OnStep(double ts) @@ -48,5 +49,6 @@ void AlfaAnimationTask::OnStep(double ts) m_current = m_start + t * (m_end - m_start); } - m_f->Invalidate(); + ///@TODO UVR + //m_f->Invalidate(); } diff --git a/map/anim_phase_chain.cpp b/map/anim_phase_chain.cpp index 5915ce82cf..a6b6661d53 100644 --- a/map/anim_phase_chain.cpp +++ b/map/anim_phase_chain.cpp @@ -49,7 +49,8 @@ void AnimPhaseChain::OnStep(double ts) double t = elapsedTime / phase->m_timeInterval; m_scale = m_startScale + t * (phase->m_endScale - m_startScale); - m_f.Invalidate(); + ///@TODO UVR + //m_f.Invalidate(); } void InitDefaultPinAnim(AnimPhaseChain * chain) diff --git a/map/bookmark.cpp b/map/bookmark.cpp index ca2395f4c9..d635db1570 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -8,6 +8,7 @@ #include "base/scope_guard.hpp" + #include "graphics/depth_constants.hpp" #include "indexer/mercator.hpp" @@ -17,6 +18,9 @@ #include "coding/internal/file_data.hpp" #include "coding/hex.hpp" +#include "drape/drape_global.hpp" +#include "drape/color.hpp" + #include "platform/platform.hpp" #include "base/stl_add.hpp" @@ -31,6 +35,23 @@ unique_ptr<UserMarkCopy> Bookmark::Copy() const return unique_ptr<UserMarkCopy>(new UserMarkCopy(this, false)); } +///@TODO UVR +//graphics::DisplayList * Bookmark::GetDisplayList(UserMarkDLCache * cache) const +//{ +// return cache->FindUserMark(UserMarkDLCache::Key(GetType(), dp::Bottom, GetContainer()->GetDepth())); +//} + +double Bookmark::GetAnimScaleFactor() const +{ + return m_animScaleFactor; +} + +m2::PointD const & Bookmark::GetPixelOffset() const +{ + static m2::PointD s_offset(0.0, 3.0); + return s_offset; +} + shared_ptr<anim::Task> Bookmark::CreateAnimTask(Framework & fm) { m_animScaleFactor = 0.0; @@ -73,7 +94,7 @@ void BookmarkCategory::ReplaceBookmark(size_t index, BookmarkData const & bm) } BookmarkCategory::BookmarkCategory(const string & name, Framework & framework) - : base_t(graphics::bookmarkDepth, framework) + : base_t(0.0/*graphics::bookmarkDepth*/, framework) , m_name(name) , m_blockAnimation(false) { @@ -166,14 +187,14 @@ size_t BookmarkCategory::FindBookmark(Bookmark const * bookmark) const namespace { -string const kPlacemark = "Placemark"; -string const kStyle = "Style"; -string const kDocument = "Document"; -string const kStyleMap = "StyleMap"; -string const kStyleUrl = "styleUrl"; -string const kPair = "Pair"; + string const kPlacemark = "Placemark"; + string const kStyle = "Style"; + string const kDocument = "Document"; + string const kStyleMap = "StyleMap"; + string const kStyleUrl = "styleUrl"; + string const kPair = "Pair"; -graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF); + dp::Color const kDefaultTrackColor = dp::Extract(0xFF33CCFF); string PointToString(m2::PointD const & org) { @@ -210,12 +231,12 @@ graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF) vector<string> m_tags; GeometryType m_geometryType; m2::PolylineD m_points; - graphics::Color m_trackColor; + dp::Color m_trackColor; string m_styleId; string m_mapStyleId; string m_styleUrlKey; - map<string, graphics::Color> m_styleUrl2Color; + map<string, dp::Color> m_styleUrl2Color; map<string, string> m_mapStyle2Style; string m_name; @@ -322,10 +343,10 @@ graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF) string fromHex = FromHex(value); ASSERT(fromHex.size() == 4, ("Invalid color passed")); // Color positions in HEX – aabbggrr - m_trackColor = graphics::Color(fromHex[3], fromHex[2], fromHex[1], fromHex[0]); + m_trackColor = dp::Color(fromHex[3], fromHex[2], fromHex[1], fromHex[0]); } - bool GetColorForStyle(string const & styleUrl, graphics::Color & color) + bool GetColorForStyle(string const & styleUrl, dp::Color & color) { if (styleUrl.empty()) return false; @@ -751,12 +772,12 @@ void BookmarkCategory::SaveToKML(ostream & s) s << "</name>\n"; s << "<Style><LineStyle>"; - graphics::Color const & col = track->GetMainColor(); + dp::Color const & col = track->GetMainColor(); s << "<color>" - << NumToHex(col.a) - << NumToHex(col.b) - << NumToHex(col.g) - << NumToHex(col.r); + << NumToHex(col.GetAlfa()) + << NumToHex(col.GetBlue()) + << NumToHex(col.GetGreen()) + << NumToHex(col.GetRed()); s << "</color>\n"; s << "<width>" diff --git a/map/bookmark.hpp b/map/bookmark.hpp index e5e08afb21..fab0f6e4a9 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -110,6 +110,9 @@ public: unique_ptr<UserMarkCopy> Copy() const override; + //virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const; + virtual double GetAnimScaleFactor() const; + virtual m2::PointD const & GetPixelOffset() const; shared_ptr<anim::Task> CreateAnimTask(Framework & fm); // StyledPoint overrides: diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 398198564f..d86f9091dd 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -19,19 +19,18 @@ #include "std/target_os.hpp" #include "std/vector.hpp" - BookmarkManager::BookmarkManager(Framework & f) : m_framework(f) - , m_bmScreen(0) , m_lastScale(1.0) , m_cache(NULL) , m_selection(f) , m_routeRenderer(new rg::RouteRenderer()) { m_userMarkLayers.reserve(3); - m_userMarkLayers.push_back(new SearchUserMarkContainer(graphics::activePinDepth, m_framework)); - m_userMarkLayers.push_back(new ApiUserMarkContainer(graphics::activePinDepth, m_framework)); - m_userMarkLayers.push_back(new DebugUserMarkContainer(graphics::debugDepth, m_framework)); + ///@TODO UVR + m_userMarkLayers.push_back(new SearchUserMarkContainer(0.0/*graphics::activePinDepth*/, m_framework)); + m_userMarkLayers.push_back(new ApiUserMarkContainer(0.0/*graphics::activePinDepth*/, m_framework)); + //m_userMarkLayers.push_back(new DebugUserMarkContainer(graphics::debugDepth, m_framework)); UserMarkContainer::InitStaticMarks(FindUserMarksContainer(UserMarkContainer::SEARCH_MARK)); } @@ -137,29 +136,30 @@ void BookmarkManager::PrepareToShutdown() void BookmarkManager::DrawCategory(BookmarkCategory const * cat, PaintOverlayEvent const & e) const { -#ifndef USE_DRAPE - /// TODO cutomize draw in UserMarkContainer for user Draw method - ASSERT(cat, ()); - if (!cat->IsVisible()) - return; - - Navigator const & navigator = m_framework.GetNavigator(); - ScreenBase const & screen = navigator.Screen(); +///@TODO UVR +//#ifndef USE_DRAPE +// /// TODO cutomize draw in UserMarkContainer for user Draw method +// ASSERT(cat, ()); +// if (!cat->IsVisible()) +// return; +// Navigator const & navigator = m_framework.GetNavigator(); +// ScreenBase const & screen = navigator.Screen(); - graphics::Screen * pScreen = GPUDrawer::GetScreen(e.GetDrawer()); +// Drawer * pDrawer = e.GetDrawer(); +// graphics::Screen * pScreen = pDrawer->screen(); - LazyMatrixCalc matrix(screen, m_lastScale); +// LazyMatrixCalc matrix(screen, m_lastScale); - // Draw tracks. - for (size_t i = 0; i < cat->GetTracksCount(); ++i) - { - Track const * track = cat->GetTrack(i); - if (track->HasDisplayLists()) - track->Draw(pScreen, matrix.GetFinalG2P()); - } +// // Draw tracks. +// for (size_t i = 0; i < cat->GetTracksCount(); ++i) +// { +// Track const * track = cat->GetTrack(i); +// if (track->HasDisplayList()) +// track->Draw(pScreen, matrix.GetFinalG2P()); +// } - cat->Draw(e, m_cache); -#endif // USE_DRAPE +// cat->Draw(e, m_cache); +//#endif // USE_DRAPE } void BookmarkManager::ClearItems() @@ -262,62 +262,60 @@ size_t BookmarkManager::CreateBmCategory(string const & name) void BookmarkManager::DrawItems(Drawer * drawer) const { -#ifndef USE_DRAPE - ASSERT(m_cache != NULL, ()); - ASSERT(m_framework.GetLocationState(), ()); - - ScreenBase const & screen = m_framework.GetNavigator().Screen(); - m2::RectD const limitRect = screen.ClipRect(); - - LazyMatrixCalc matrix(screen, m_lastScale); - - double const drawScale = m_framework.GetDrawScale(); - double const visualScale = m_framework.GetVisualScale(); - location::RouteMatchingInfo const & matchingInfo = m_framework.GetLocationState()->GetRouteMatchingInfo(); - - auto trackUpdateFn = [&](Track const * track) - { - ASSERT(track, ()); - if (limitRect.IsIntersect(track->GetLimitRect())) - track->CreateDisplayList(m_bmScreen, matrix.GetScaleG2P(), matrix.IsScaleChanged(), drawScale, visualScale, matchingInfo); - else - track->CleanUp(); - }; - - auto dlUpdateFn = [&trackUpdateFn] (BookmarkCategory const * cat) - { - bool const isVisible = cat->IsVisible(); - for (size_t j = 0; j < cat->GetTracksCount(); ++j) - { - Track const * track = cat->GetTrack(j); - ASSERT(track, ()); - if (isVisible) - trackUpdateFn(track); - else - track->CleanUp(); - } - }; + //@TODO UVR + //ASSERT(m_cache != NULL, ()); + //ASSERT(m_framework.GetLocationState(), ()); + + //ScreenBase const & screen = m_framework.GetNavigator().Screen(); + //m2::RectD const limitRect = screen.ClipRect(); + + //LazyMatrixCalc matrix(screen, m_lastScale); + + //double const drawScale = m_framework.GetDrawScale(); + //double const visualScale = m_framework.GetVisualScale(); + //location::RouteMatchingInfo const & matchingInfo = m_framework.GetLocationState()->GetRouteMatchingInfo(); + + //auto trackUpdateFn = [&](Track const * track) + //{ + // ASSERT(track, ()); + // if (limitRect.IsIntersect(track->GetLimitRect())) + // track->CreateDisplayList(m_bmScreen, matrix.GetScaleG2P(), matrix.IsScaleChanged(), drawScale, visualScale, matchingInfo); + // else + // track->CleanUp(); + //}; + + //auto dlUpdateFn = [&trackUpdateFn] (BookmarkCategory const * cat) + //{ + // bool const isVisible = cat->IsVisible(); + // for (size_t j = 0; j < cat->GetTracksCount(); ++j) + // { + // Track const * track = cat->GetTrack(j); + // ASSERT(track, ()); + // if (isVisible) + // trackUpdateFn(track); + // else + // track->CleanUp(); + // } + //}; // Update track's display lists. - for (size_t i = 0; i < m_categories.size(); ++i) - { - BookmarkCategory const * cat = m_categories[i]; - ASSERT(cat, ()); - dlUpdateFn(cat); - } - - graphics::Screen * pScreen = GPUDrawer::GetScreen(drawer); - pScreen->beginFrame(); - - PaintOverlayEvent event(drawer, screen); - for (auto const & layer : m_userMarkLayers) - layer->Draw(event, m_cache); - for (auto const & category : m_categories) - DrawCategory(category, event); - m_routeRenderer->Render(pScreen, screen); - m_selection.Draw(event, m_cache); - - pScreen->endFrame(); + //for (size_t i = 0; i < m_categories.size(); ++i) + //{ + // BookmarkCategory const * cat = m_categories[i]; + // ASSERT(cat, ()); + // dlUpdateFn(cat); + //} + + //graphics::Screen * pScreen = GPUDrawer::GetScreen(drawer); + //pScreen->beginFrame(); + + //PaintOverlayEvent event(drawer, screen); + //for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), bind(&UserMarkContainer::Draw, _1, event, m_cache)); + //for_each(m_categories.begin(), m_categories.end(), bind(&BookmarkManager::DrawCategory, this, _1, event)); + //m_routeRenderer->Render(pScreen, screen); + //m_selection.Draw(event, m_cache); + + //pScreen->endFrame(); #endif // USE_DRAPE } @@ -444,30 +442,33 @@ UserMarkContainer::Controller & BookmarkManager::UserMarksGetController(UserMark return FindUserMarksContainer(type)->GetController(); } -void BookmarkManager::SetScreen(graphics::Screen * screen) -{ - ResetScreen(); - m_bmScreen = screen; - m_cache = new UserMarkDLCache(m_bmScreen); -} +///@TODO UVR +//void BookmarkManager::SetScreen(graphics::Screen * screen) +//{ +// ResetScreen(); +// m_bmScreen = screen; +// m_cache = new UserMarkDLCache(m_bmScreen); +//} void BookmarkManager::ResetScreen() { - delete m_cache; - m_cache = NULL; + ///@TODO UVR + //delete m_cache; + //m_cache = NULL; - auto dlDeleteFn = [] (BookmarkCategory const * cat) - { - for (size_t j = 0; j < cat->GetTracksCount(); ++j) - cat->GetTrack(j)->CleanUp(); - }; + //auto dlDeleteFn = [] (BookmarkCategory const * cat) + //{ + // for (size_t j = 0; j < cat->GetTracksCount(); ++j) + // cat->GetTrack(j)->CleanUp(); + //}; - if (m_bmScreen) - { + //if (m_bmScreen) + //{ // Delete display lists for all tracks - for_each(m_categories.begin(), m_categories.end(), dlDeleteFn); - m_bmScreen = 0; - } + // for_each(m_categories.begin(), m_categories.end(), dlDeleteFn); + // m_routeRenderer->Clear(); + // m_bmScreen = 0; + //} } void BookmarkManager::SetRouteTrack(m2::PolylineD const & routePolyline, vector<double> const & turns, diff --git a/map/bookmark_manager.hpp b/map/bookmark_manager.hpp index 58fe372815..9e4ceebe76 100644 --- a/map/bookmark_manager.hpp +++ b/map/bookmark_manager.hpp @@ -10,8 +10,6 @@ class Framework; class PaintEvent; -namespace graphics { class Screen; } -namespace rg { class RouteRenderer; } class BookmarkManager : private noncopyable { @@ -23,7 +21,6 @@ class BookmarkManager : private noncopyable vector<UserMarkContainer * > m_userMarkLayers; - graphics::Screen * m_bmScreen; mutable double m_lastScale; typedef vector<BookmarkCategory *>::iterator CategoryIter; @@ -85,7 +82,8 @@ public: void UserMarksClear(UserMarkContainer::Type type, size_t skipCount = 0); UserMarkContainer::Controller & UserMarksGetController(UserMarkContainer::Type type); - void SetScreen(graphics::Screen * screen); + ///@TODO UVR + //void SetScreen(graphics::Screen * screen); void ResetScreen(); void SetRouteTrack(m2::PolylineD const & routePolyline, vector<double> const & turns, diff --git a/map/compass_arrow.cpp b/map/compass_arrow.cpp index d0beff1250..7f1ca34338 100644 --- a/map/compass_arrow.cpp +++ b/map/compass_arrow.cpp @@ -19,27 +19,27 @@ CompassArrow::Params::Params() {} CompassArrow::CompassArrow(Params const & p) - : BaseT(p), - m_pixelSize(-1, -1), - m_angle(0), + : m_angle(0), m_framework(p.m_framework) { } void CompassArrow::AnimateShow() { - if (!isVisible()) - { - setIsVisible(true); - double startValue = m_animTask == nullptr ? 0.1 : GetCurrentAlfa(); - CreateAnim(startValue, 1.0, 0.2, 0.0, true); - } + ///@TODO UVR +// if (!isVisible()) +// { +// setIsVisible(true); +// double startValue = m_animTask == nullptr ? 0.1 : GetCurrentAlfa(); +// CreateAnim(startValue, 1.0, 0.2, 0.0, true); +// } } void CompassArrow::AnimateHide() { - if (isBaseVisible() && (m_animTask == NULL || !IsHidingAnim())) - CreateAnim(1.0, 0.0, 0.3, 0.0, false); + ///@TODO UVR +// if (isBaseVisible() && (m_animTask == NULL || !IsHidingAnim())) +// CreateAnim(1.0, 0.0, 0.3, 0.0, false); } void CompassArrow::SetAngle(double angle) @@ -47,44 +47,26 @@ void CompassArrow::SetAngle(double angle) m_angle = angle; } -m2::PointI CompassArrow::GetPixelSize() const -{ - if (m_pixelSize == m2::PointI(-1, -1)) - { - Resource const * res = GetCompassResource(); - m_pixelSize = m2::PointI(res->m_texRect.SizeX(), res->m_texRect.SizeY()); - } - return m_pixelSize; -} +///@TODO UVR +//void CompassArrow::draw(OverlayRenderer * r, +// math::Matrix<double, 3, 3> const & m) const +//{ +// if (isBaseVisible()) +// { +// checkDirtyLayout(); -void CompassArrow::GetMiniBoundRects(RectsT & rects) const -{ - double const halfW = m_pixelSize.x / 2.0; - double const halfH = m_pixelSize.y / 2.0; +// UniformsHolder holder; +// holder.insertValue(ETransparency, GetCurrentAlfa()); - rects.push_back(m2::AnyRectD(pivot(), -math::pi / 2 + m_angle, - m2::RectD(-halfW, -halfH, halfW, halfH))); -} +// math::Matrix<double, 3, 3> drawM = math::Shift( +// math::Rotate( +// math::Identity<double, 3>(), +// m_angle), +// pivot()); -void CompassArrow::draw(OverlayRenderer * r, - math::Matrix<double, 3, 3> const & m) const -{ - if (isBaseVisible()) - { - checkDirtyLayout(); - - UniformsHolder holder; - holder.insertValue(ETransparency, GetCurrentAlfa()); - - math::Matrix<double, 3, 3> drawM = math::Shift( - math::Rotate( - math::Identity<double, 3>(), - m_angle), - pivot()); - - r->drawDisplayList(m_dl.get(), drawM * m, &holder); - } -} +// r->drawDisplayList(m_dl.get(), drawM * m, &holder); +// } +//} bool CompassArrow::isVisible() const { @@ -96,7 +78,8 @@ bool CompassArrow::isVisible() const void CompassArrow::AlfaAnimEnded(bool isVisible) { - setIsVisible(isVisible); + ///@TODO UVR + //setIsVisible(isVisible); m_animTask.reset(); } @@ -131,84 +114,57 @@ void CompassArrow::CreateAnim(double startAlfa, double endAlfa, double timeInter m_framework->GetAnimController()->AddTask(m_animTask); } -const Resource * CompassArrow::GetCompassResource() const -{ - Screen * cacheScreen = m_controller->GetCacheScreen(); - Icon::Info icon("compass-image"); - Resource const * res = m_controller->GetCacheScreen()->fromID(cacheScreen->findInfo(icon)); - ASSERT(res, ("Commpass-image not founded")); - return res; -} - void CompassArrow::cache() { - Screen * cacheScreen = m_controller->GetCacheScreen(); + ///@TODO UVR +// Screen * cacheScreen = m_controller->GetCacheScreen(); - m_dl.reset(); - m_dl.reset(cacheScreen->createDisplayList()); +// m_dl.reset(); +// m_dl.reset(cacheScreen->createDisplayList()); - cacheScreen->beginFrame(); - cacheScreen->setDisplayList(m_dl.get()); - cacheScreen->applyVarAlfaStates(); +// cacheScreen->beginFrame(); +// cacheScreen->setDisplayList(m_dl.get()); +// cacheScreen->applyVarAlfaStates(); - Resource const * res = GetCompassResource(); - shared_ptr<gl::BaseTexture> texture = cacheScreen->pipeline(res->m_pipelineID).texture(); - m2::RectU rect = res->m_texRect; - double halfW = rect.SizeX() / 2.0; - double halfH = rect.SizeY() / 2.0; +// Resource const * res = GetCompassResource(); +// shared_ptr<gl::BaseTexture> texture = cacheScreen->pipeline(res->m_pipelineID).texture(); +// m2::RectU rect = res->m_texRect; +// double halfW = rect.SizeX() / 2.0; +// double halfH = rect.SizeY() / 2.0; - m2::PointD coords[] = - { - m2::PointD(-halfW, -halfH), - m2::PointD(-halfW, halfH), - m2::PointD(halfW, -halfH), - m2::PointD(halfW, halfH), - }; - - m2::PointF normal(0.0, 0.0); - m2::PointF texCoords[] = - { - texture->mapPixel(m2::PointF(rect.minX(), rect.minY())), - texture->mapPixel(m2::PointF(rect.minX(), rect.maxY())), - texture->mapPixel(m2::PointF(rect.maxX(), rect.minY())), - texture->mapPixel(m2::PointF(rect.maxX(), rect.maxY())), - }; +// m2::PointD coords[] = +// { +// m2::PointD(-halfW, -halfH), +// m2::PointD(-halfW, halfH), +// m2::PointD(halfW, -halfH), +// m2::PointD(halfW, halfH), +// }; + +// m2::PointF normal(0.0, 0.0); +// m2::PointF texCoords[] = +// { +// texture->mapPixel(m2::PointF(rect.minX(), rect.minY())), +// texture->mapPixel(m2::PointF(rect.minX(), rect.maxY())), +// texture->mapPixel(m2::PointF(rect.maxX(), rect.minY())), +// texture->mapPixel(m2::PointF(rect.maxX(), rect.maxY())), +// }; - cacheScreen->addTexturedStripStrided(coords, sizeof(m2::PointD), - &normal, 0, - texCoords, sizeof(m2::PointF), - 4, depth(), res->m_pipelineID); +// cacheScreen->addTexturedStripStrided(coords, sizeof(m2::PointD), +// &normal, 0, +// texCoords, sizeof(m2::PointF), +// 4, depth(), res->m_pipelineID); - cacheScreen->setDisplayList(0); - cacheScreen->endFrame(); +// cacheScreen->setDisplayList(0); +// cacheScreen->endFrame(); } void CompassArrow::purge() { - m_dl.reset(); } bool CompassArrow::isBaseVisible() const { - return BaseT::isVisible(); -} - -bool CompassArrow::onTapEnded(m2::PointD const & pt) -{ - anim::Controller * animController = m_framework->GetAnimController(); - anim::Controller::Guard guard(animController); - - // switching off compass follow mode - m_framework->GetLocationState()->OnCompassTaped(); - m_framework->Invalidate(); - - return true; -} - -bool CompassArrow::hitTest(m2::PointD const & pt) const -{ - Resource const * res = GetCompassResource(); - double rad = 1.5 * max(res->m_texRect.SizeX() / 2.0, res->m_texRect.SizeY() / 2.0); - return pt.Length(pivot()) < rad * visualScale(); + ///@TODO UVR + return false; } diff --git a/map/compass_arrow.hpp b/map/compass_arrow.hpp index fa9dd13adb..30bb787bbb 100644 --- a/map/compass_arrow.hpp +++ b/map/compass_arrow.hpp @@ -1,7 +1,5 @@ #pragma once -#include "gui/element.hpp" - #include "std/shared_ptr.hpp" #include "std/unique_ptr.hpp" @@ -11,25 +9,13 @@ namespace anim class Task; } -namespace graphics -{ - class DisplayList; - struct Resource; -} - class Framework; /// Compass Arrow, which shows up when the screen is rotated, /// and rotates screen back to straight orientation when beeing pressed -class CompassArrow : public gui::Element +class CompassArrow { - typedef gui::Element BaseT; - - mutable m2::PointI m_pixelSize; double m_angle; - - unique_ptr<graphics::DisplayList> m_dl; - shared_ptr<anim::Task> m_animTask; void AlfaAnimEnded(bool isVisible); @@ -38,12 +24,10 @@ class CompassArrow : public gui::Element void CreateAnim(double startAlfa, double endAlfa, double timeInterval, double timeOffset, bool isVisibleAtEnd); Framework * m_framework; - graphics::Resource const * GetCompassResource() const; - bool isBaseVisible() const; public: - struct Params : public BaseT::Params + struct Params { Framework * m_framework; Params(); @@ -55,19 +39,16 @@ public: void AnimateHide(); void SetAngle(double angle); - m2::PointI GetPixelSize() const; /// @name Override from graphics::Overlayelement and gui::Element. //@{ - virtual void GetMiniBoundRects(RectsT & rects) const; - void draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m) const; bool isVisible() const; - bool hitTest(m2::PointD const & pt) const; + //bool hitTest(m2::PointD const & pt) const; void cache(); void purge(); - bool onTapEnded(m2::PointD const & pt); + //bool onTapEnded(m2::PointD const & pt); //@} }; diff --git a/map/country_status_display.hpp b/map/country_status_display.hpp index 4047e9cc89..cfe993325e 100644 --- a/map/country_status_display.hpp +++ b/map/country_status_display.hpp @@ -2,34 +2,21 @@ #include "map/active_maps_layout.hpp" -#include "gui/element.hpp" -#include "platform/country_defines.hpp" - -#ifdef OMIM_OS_ANDROID - #include "../base/mutex.hpp" -#endif +#include "storage/storage_defines.hpp" #include "std/unique_ptr.hpp" #include "std/target_os.hpp" -namespace gui -{ - class Button; - class TextView; -} - class Framework; namespace storage { struct TIndex; } /// This class is a composite GUI element to display /// an on-screen GUI for the country, which is not downloaded yet. -class CountryStatusDisplay : public gui::Element, - public storage::ActiveMapsLayout::ActiveMapsListener +class CountryStatusDisplay : public storage::ActiveMapsLayout::ActiveMapsListener { - typedef gui::Element TBase; public: - struct Params : public gui::Element::Params + struct Params { Params(storage::ActiveMapsLayout & activeMaps) : m_activeMaps(activeMaps) {} @@ -48,20 +35,10 @@ public: //@{ virtual void setIsVisible(bool isVisible) const; virtual void setIsDirtyLayout(bool isDirty) const; - virtual m2::RectD GetBoundRect() const; - - void draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m) const; void cache(); void purge(); void layout(); - - void setController(gui::Controller * controller); - - bool onTapStarted(m2::PointD const & pt); - bool onTapMoved(m2::PointD const & pt); - bool onTapEnded(m2::PointD const & pt); - bool onTapCancelled(m2::PointD const & pt); //@} private: @@ -90,11 +67,10 @@ private: void ComposeElementsForState(); - typedef function<bool (unique_ptr<gui::Button> const &, m2::PointD const &)> TTapActionFn; - bool OnTapAction(TTapActionFn const & action, m2::PointD const & pt); - void OnButtonClicked(Element const * button); - - void Repaint() const; + ///@TODO UVR + //typedef function<bool (unique_ptr<gui::Button> const &, m2::PointD const &)> TTapActionFn; + //bool OnTapAction(TTapActionFn const & action, m2::PointD const & pt); + //void OnButtonClicked(Element const * button); bool IsStatusFailed() const; @@ -102,20 +78,10 @@ private: storage::ActiveMapsLayout & m_activeMaps; int m_activeMapsSlotID = 0; - unique_ptr<gui::TextView> m_label; - unique_ptr<gui::Button> m_primaryButton; - unique_ptr<gui::Button> m_secondaryButton; - string m_displayMapName; mutable storage::TStatus m_countryStatus = storage::TStatus::EUnknown; storage::TIndex m_countryIdx; storage::LocalAndRemoteSizeT m_progressSize; TDownloadCountryFn m_downloadCallback; - - void Lock() const; - void Unlock() const; -#ifdef OMIM_OS_ANDROID - mutable threads::Mutex m_mutex; -#endif }; diff --git a/map/framework.cpp b/map/framework.cpp index 9582660e09..f0a17707e9 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1,20 +1,7 @@ -#include "framework.hpp" -#include "benchmark_provider.hpp" -#include "benchmark_engine.hpp" -#include "geourl_process.hpp" -#include "navigator_utils.hpp" -#include "ge0_parser.hpp" - -#include "render/cpu_drawer.hpp" -#include "render/gpu_drawer.hpp" - -#ifndef USE_DRAPE - #include "render/feature_processor.hpp" - #include "render/drawer.hpp" - #include "render/proto_to_styles.hpp" -#else - #include "../drape_frontend/visual_params.hpp" -#endif // USE_DRAPE +#include "map/framework.hpp" + +#include "map/geourl_process.hpp" +#include "map/ge0_parser.hpp" #include "defines.hpp" @@ -29,6 +16,8 @@ #include "search/search_engine.hpp" #include "search/search_query_factory.hpp" +#include "drape_frontend/visual_params.hpp" + #include "indexer/categories_holder.hpp" #include "indexer/classificator_loader.hpp" #include "indexer/feature.hpp" @@ -45,8 +34,6 @@ #include "anim/controller.hpp" -#include "gui/controller.hpp" - #include "platform/local_country_file_utils.hpp" #include "platform/measurement_utils.hpp" #include "platform/mwm_version.hpp" @@ -63,8 +50,6 @@ #include "geometry/angles.hpp" #include "geometry/distance_on_sphere.hpp" -#include "graphics/depth_constants.hpp" - #include "base/math.hpp" #include "base/timer.hpp" #include "base/scope_guard.hpp" @@ -143,13 +128,12 @@ void Framework::OnLocationUpdate(GpsInfo const & info) double distanceFromBegin = 0.0; MatchLocationToRoute(rInfo, routeMatchingInfo, hasDistanceFromBegin, distanceFromBegin); - shared_ptr<State> const & state = GetLocationState(); - state->OnLocationUpdate(rInfo, m_routingSession.IsNavigable(), routeMatchingInfo); - - if (state->IsModeChangeViewport()) - UpdateUserViewportChanged(); + ///@TODO UVR + //shared_ptr<State> const & state = GetLocationState(); + //state->OnLocationUpdate(rInfo, m_routingSession.IsNavigable()); - m_bmManager.UpdateRouteDistanceFromBegin(hasDistanceFromBegin ? distanceFromBegin : 0.0); + //if (state->IsModeChangeViewport()) + // UpdateUserViewportChanged(); } void Framework::OnCompassUpdate(CompassInfo const & info) @@ -161,12 +145,14 @@ void Framework::OnCompassUpdate(CompassInfo const & info) CompassInfo const & rInfo = info; #endif - GetLocationState()->OnCompassUpdate(rInfo); + ///@TODO UVR + //GetLocationState()->OnCompassUpdate(rInfo); } void Framework::StopLocationFollow() { - GetLocationState()->StopLocationFollow(); + ///@TODO UVR + //GetLocationState()->StopLocationFollow(); } InformationDisplay & Framework::GetInformationDisplay() @@ -190,16 +176,13 @@ m2::PointD Framework::GetWidgetSize(InformationDisplay::WidgetType widget) const } Framework::Framework() - : m_navigator(m_scales), - m_animator(this), + : m_animator(this), m_queryMaxScaleMode(false), m_width(0), m_height(0), m_countryTree(*this), - m_guiController(new gui::Controller), m_animController(new anim::Controller), m_informationDisplay(this), - m_benchmarkEngine(0), m_bmManager(*this), m_balloonManager(*this), m_fixedSearchResults(0), @@ -243,10 +226,9 @@ Framework::Framework() m_stringsBundle.SetDefaultString("routing_failed_route_not_found", "There is no route found between the selected origin and destination.Please select a different start or end point."); m_stringsBundle.SetDefaultString("routing_failed_internal_error", "Internal error occurred. Please try to delete and download the map again. If problem persist please contact us at support@maps.me."); - m_guiController->SetStringsBundle(&m_stringsBundle); - // Init information display. - m_informationDisplay.setController(m_guiController.get()); + ///@TODO UVR + //m_informationDisplay.setController(m_guiController.get()); #ifdef DRAW_TOUCH_POINTS m_informationDisplay.enableDebugPoints(true); @@ -299,7 +281,6 @@ Framework::Framework() Framework::~Framework() { - delete m_benchmarkEngine; m_model.SetOnMapDeregisteredCallback(nullptr); } @@ -382,11 +363,6 @@ bool Framework::IsSingleFrameRendererInited() const return m_cpuDrawer != nullptr; } -double Framework::GetVisualScale() const -{ - return m_scales.GetVisualScale(); -} - void Framework::DeleteCountry(storage::TIndex const & index, MapOptions opt) { switch (opt) @@ -401,7 +377,8 @@ void Framework::DeleteCountry(storage::TIndex const & index, MapOptions opt) // OnMapDeregistered call. if (m_model.DeregisterMap(countryFile)) { - InvalidateRect(GetCountryBounds(countryFile.GetNameWithoutExt()), true /* doForceUpdate */); + ///@TODO UVR + //InvalidateRect(GetCountryBounds(countryFile.GetNameWithoutExt()), true /* doForceUpdate */); } return; } @@ -461,7 +438,7 @@ void Framework::UpdateLatestCountryFile(LocalCountryFile const & localFile) auto p = m_model.RegisterMap(localFile); MwmSet::MwmId const & id = p.first; if (id.IsAlive()) - InvalidateRect(id.GetInfo()->m_limitRect, true /* doForceUpdate */); + //InvalidateRect(handle.GetInfo()->m_limitRect, true /* doForceUpdate */); m_searchEngine->ClearViewportsCache(); } @@ -566,7 +543,7 @@ void Framework::ShowBookmark(BookmarkAndCategory const & bnc) if (scale == -1.0) scale = scales::GetUpperComfortScale(); - ShowRectExVisibleScale(m_scales.GetRectForDrawScale(scale, bmk->GetOrg())); + ShowRectExVisibleScale(df::GetRectForDrawScale(scale, bmk->GetOrg())); Bookmark * mark = GetBmCategory(bnc.first)->GetBookmark(bnc.second); ActivateUserMark(mark); m_balloonManager.OnShowMark(mark); @@ -656,11 +633,7 @@ bool Framework::AddBookmarksFile(string const & filePath) void Framework::PrepareToShutdown() { -#ifndef USE_DRAPE - SetRenderPolicy(0); -#else - m_drapeEngine.Destroy(); -#endif // USE_DRAPE + DestroyDrapeEngine(); } void Framework::SetMaxWorldRect() @@ -668,46 +641,6 @@ void Framework::SetMaxWorldRect() m_navigator.SetFromRect(m2::AnyRectD(m_model.GetWorldRect())); } -bool Framework::NeedRedraw() const -{ - // Checking this here allows to avoid many dummy "IsInitialized" flags in client code. -#ifndef USE_DRAPE - return (m_renderPolicy && m_renderPolicy->NeedRedraw()); -#else - return false; -#endif // USE_DRAPE -} - -void Framework::SetNeedRedraw(bool flag) -{ -#ifndef USE_DRAPE - m_renderPolicy->GetWindowHandle()->setNeedRedraw(flag); - //if (!flag) - // m_doForceUpdate = false; -#endif // USE_DRAPE -} - -void Framework::Invalidate(bool doForceUpdate) -{ - InvalidateRect(MercatorBounds::FullRect(), doForceUpdate); -} - -void Framework::InvalidateRect(m2::RectD const & rect, bool doForceUpdate) -{ -#ifndef USE_DRAPE - if (m_renderPolicy) - { - ASSERT ( rect.IsValid(), () ); - m_renderPolicy->SetForceUpdate(doForceUpdate); - m_renderPolicy->SetInvalidRect(m2::AnyRectD(rect)); - m_renderPolicy->GetWindowHandle()->invalidate(); - } -#else - if (!m_drapeEngine.IsNull()) - m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE -} - void Framework::SaveState() { Settings::Set("ScreenClipRect", m_navigator.Screen().GlobalRect()); @@ -715,28 +648,11 @@ void Framework::SaveState() bool Framework::LoadState() { - m2::AnyRectD rect; - if (!Settings::Get("ScreenClipRect", rect)) - return false; - - // additional check for valid rect - m2::RectD r = rect.GetGlobalRect(); - if (!m_scales.GetWorldRect().IsRectInside(r)) - return false; - - CheckMinMaxVisibleScale(r); - - double const dx = r.SizeX(); - double const dy = r.SizeY(); - - m2::AnyRectD safeRect(r.Center(), rect.Angle(), m2::RectD(-dx/2, -dy/2, dx/2, dy/2)); - m_navigator.SetFromRect(safeRect); - -#ifdef USE_DRAPE + bool r = m_navigator.LoadState(); + LOG(LINFO, ("Navigator state loaded = ", r, " Rect = ", m_navigator.Screen().ClipRect())); if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif - return true; + return r; } //@} @@ -746,41 +662,22 @@ void Framework::OnSize(int w, int h) if (w < 2) w = 2; if (h < 2) h = 2; - m2::RectD oldPixelRect = m_navigator.Screen().PixelRect(); - -#ifndef USE_DRAPE - m_navigator.OnSize(0, 0, w, h); - if (m_renderPolicy) - { - // if gui controller not initialized, than we work in mode "Without gui" - // and no need to set gui layout. We will not render it. - if (m_guiController->GetCacheScreen()) - m_informationDisplay.SetWidgetPivotsByDefault(w, h); - m_renderPolicy->OnSize(w, h); - } -#else if (!m_drapeEngine.IsNull()) { double vs = df::VisualParams::Instance().GetVisualScale(); m_navigator.OnSize(0, 0, vs * w, vs * h); - //m_navigator.OnSize(0, 0, w, h); m_drapeEngine->Resize(w, h); m_drapeEngine->UpdateCoverage(m_navigator.Screen()); } -#endif // USE_DRAPE m_width = w; m_height = h; - GetLocationState()->OnSize(oldPixelRect); + ///@TODO UVR + //GetLocationState()->OnSize(); } bool Framework::SetUpdatesEnabled(bool doEnable) { -#ifndef USE_DRAPE - if (m_renderPolicy) - return m_renderPolicy->GetWindowHandle()->setUpdatesEnabled(doEnable); - else -#endif // USE_DRAPE return false; } @@ -789,48 +686,6 @@ int Framework::GetDrawScale() const return m_navigator.GetDrawScale(); } -#ifndef USE_DRAPE -RenderPolicy::TRenderFn Framework::DrawModelFn() -{ - bool const isTiling = m_renderPolicy->IsTiling(); - return bind(&Framework::DrawModel, this, _1, _2, _3, _4, isTiling); -} - -void Framework::DrawModel(shared_ptr<PaintEvent> const & e, - ScreenBase const & screen, - m2::RectD const & renderRect, - int baseScale, bool isTilingQuery) -{ - m2::RectD selectRect; - m2::RectD clipRect; - - double const inflationSize = m_scales.GetClipRectInflation(); - screen.PtoG(m2::Inflate(m2::RectD(renderRect), inflationSize, inflationSize), clipRect); - screen.PtoG(m2::RectD(renderRect), selectRect); - - int drawScale = m_scales.GetDrawTileScale(baseScale); - fwork::FeatureProcessor doDraw(clipRect, screen, e, drawScale); - if (m_queryMaxScaleMode) - drawScale = scales::GetUpperScale(); - - try - { - int const upperScale = scales::GetUpperScale(); - if (isTilingQuery && drawScale <= upperScale) - m_model.ForEachFeature_TileDrawing(selectRect, doDraw, drawScale); - else - m_model.ForEachFeature(selectRect, doDraw, min(upperScale, drawScale)); - } - catch (redraw_operation_cancelled const &) - {} - - e->setIsEmptyDrawing(doDraw.IsEmptyDrawing()); - - if (m_navigator.Update(ElapsedSeconds())) - Invalidate(); -} -#endif // USE_DRAPE - bool Framework::IsCountryLoaded(m2::PointD const & pt) const { // TODO (@gorshenin, @govako): the method's name is quite @@ -844,64 +699,41 @@ bool Framework::IsCountryLoaded(m2::PointD const & pt) const return m_model.IsLoaded(fName); } -#ifndef USE_DRAPE -void Framework::BeginPaint(shared_ptr<PaintEvent> const & e) -{ - if (m_renderPolicy) - m_renderPolicy->BeginFrame(e, m_navigator.Screen()); -} +///@TODO UVR +//void Framework::DrawAdditionalInfo(shared_ptr<PaintEvent> const & e) +//{ +// // m_informationDisplay is set and drawn after the m_renderPolicy +// ASSERT ( m_renderPolicy, () ); -void Framework::EndPaint(shared_ptr<PaintEvent> const & e) -{ - if (m_renderPolicy) - m_renderPolicy->EndFrame(e, m_navigator.Screen()); -} +// Drawer * pDrawer = e->drawer(); +// graphics::Screen * pScreen = pDrawer->screen(); -void Framework::DrawAdditionalInfo(shared_ptr<PaintEvent> const & e) -{ - // m_informationDisplay is set and drawn after the m_renderPolicy - ASSERT ( m_renderPolicy, () ); +// pScreen->beginFrame(); - graphics::Screen * pScreen = GPUDrawer::GetScreen(e->drawer()); +// bool const isEmptyModel = m_renderPolicy->IsEmptyModel(); - pScreen->beginFrame(); +// if (isEmptyModel) +// m_informationDisplay.setEmptyCountryIndex(GetCountryIndex(GetViewportCenter())); +// else +// m_informationDisplay.setEmptyCountryIndex(storage::TIndex()); - int const drawScale = GetDrawScale(); - bool const isEmptyModel = m_renderPolicy->IsEmptyModel(); +// bool const isCompassEnabled = my::Abs(ang::GetShortestDistance(m_navigator.Screen().GetAngle(), 0.0)) > my::DegToRad(3.0); +// bool const isCompasActionEnabled = m_informationDisplay.isCompassArrowEnabled() && m_navigator.InAction(); - if (isEmptyModel) - m_informationDisplay.setEmptyCountryIndex(GetCountryIndex(GetViewportCenter())); - else - m_informationDisplay.setEmptyCountryIndex(storage::TIndex()); - - bool const isCompassEnabled = my::Abs(ang::GetShortestDistance(m_navigator.Screen().GetAngle(), 0.0)) > my::DegToRad(3.0); - bool const isCompasActionEnabled = m_informationDisplay.isCompassArrowEnabled() && m_navigator.InAction(); +// m_informationDisplay.enableCompassArrow(isCompassEnabled || isCompasActionEnabled); +// m_informationDisplay.setCompassArrowAngle(m_navigator.Screen().GetAngle()); - m_informationDisplay.enableCompassArrow(isCompassEnabled || isCompasActionEnabled); - m_informationDisplay.setCompassArrowAngle(m_navigator.Screen().GetAngle()); +// int const drawScale = GetDrawScale(); +// m_informationDisplay.setDebugInfo(0, drawScale); - m_informationDisplay.enableRuler(!m_isFullScreenMode && (drawScale > 4 && !m_informationDisplay.isCopyrightActive())); +// m_informationDisplay.enableRuler(drawScale > 4 && !m_informationDisplay.isCopyrightActive()); - m_informationDisplay.setDebugInfo(0, drawScale); - pScreen->endFrame(); +// pScreen->endFrame(); - m_bmManager.DrawItems(e->drawer()); - m_guiController->UpdateElements(); - m_guiController->DrawFrame(pScreen); -} - -void Framework::DoPaint(shared_ptr<PaintEvent> const & e) -{ - if (m_renderPolicy) - { - m_renderPolicy->DrawFrame(e, m_navigator.Screen()); - - // Don't render additional elements if guiController wasn't initialized. - if (m_guiController->GetCacheScreen() != NULL) - DrawAdditionalInfo(e); - } -} -#endif // USE_DRAPE +// m_bmManager.DrawItems(e); +// m_guiController->UpdateElements(); +// m_guiController->DrawFrame(pScreen); +//} m2::PointD const & Framework::GetViewportCenter() const { @@ -911,7 +743,8 @@ m2::PointD const & Framework::GetViewportCenter() const void Framework::SetViewportCenter(m2::PointD const & pt) { m_navigator.CenterViewport(pt); - Invalidate(); + if (!m_drapeEngine.IsNull()) + m_drapeEngine->UpdateCoverage(m_navigator.Screen()); } shared_ptr<MoveScreenTask> Framework::SetViewportCenterAnimated(m2::PointD const & endPt) @@ -923,7 +756,7 @@ shared_ptr<MoveScreenTask> Framework::SetViewportCenterAnimated(m2::PointD const void Framework::CheckMinGlobalRect(m2::RectD & rect) const { - m2::RectD const minRect = m_scales.GetRectForDrawScale(scales::GetUpperStyleScale(), rect.Center()); + m2::RectD const minRect = df::GetRectForDrawScale(scales::GetUpperStyleScale(), rect.Center()); if (minRect.IsRectInside(rect)) rect = minRect; } @@ -935,30 +768,25 @@ void Framework::CheckMinMaxVisibleScale(m2::RectD & rect, int maxScale/* = -1*/) m2::PointD const c = rect.Center(); int const worldS = scales::GetUpperWorldScale(); - int scale = m_scales.GetDrawTileScale(rect); + int scale = df::GetDrawTileScale(rect); if (scale > worldS && !IsCountryLoaded(c)) { // country is not loaded - limit on world scale - rect = m_scales.GetRectForDrawScale(worldS, c); + rect = df::GetRectForDrawScale(worldS, c); scale = worldS; } if (maxScale != -1 && scale > maxScale) { // limit on passed maximal scale - rect = m_scales.GetRectForDrawScale(maxScale, c); + rect = df::GetRectForDrawScale(maxScale, c); } } void Framework::ShowRect(double lat, double lon, double zoom) { m2::PointD center(MercatorBounds::FromLatLon(lat, lon)); - ShowRect(center, zoom); -} - -void Framework::ShowRect(m2::PointD const & pt, double zoom) -{ - ShowRectEx(m_scales.GetRectForDrawScale(zoom, pt)); + ShowRectEx(df::GetRectForDrawScale(zoom, center)); } void Framework::ShowRect(m2::RectD rect) @@ -966,7 +794,8 @@ void Framework::ShowRect(m2::RectD rect) CheckMinGlobalRect(rect); m_navigator.SetFromRect(m2::AnyRectD(rect)); - Invalidate(); + ///@TODO UVR + //Invalidate(); } void Framework::ShowRectEx(m2::RectD rect) @@ -990,8 +819,16 @@ void Framework::ShowRectFixed(m2::RectD const & rect) void Framework::ShowRectFixedAR(m2::AnyRectD const & rect) { - navi::SetRectFixedAR(rect, m_scales, m_navigator); - Invalidate(); + double const halfSize = df::VisualParams::Instance().GetTileSize() / 2.0; + m2::RectD etalonRect(-halfSize, -halfSize, halfSize, halfSize); + + m2::PointD const pxCenter = m_navigator.Screen().PixelRect().Center(); + etalonRect.Offset(pxCenter); + + m_navigator.SetFromRects(rect, etalonRect); + + ///@TODO UVR + //Invalidate(); } void Framework::StartInteractiveSearch(search::SearchParams const & params) @@ -1027,6 +864,17 @@ void Framework::UpdateSearchResults(search::Results const & results) Invalidate(); } +void Framework::OnSearchResultsCallbackUI(search::Results const & results) +{ + if (IsISActive()) + { + FillSearchResultsMarks(results); + + ///@TODO UVR + //Invalidate(); + } +} + void Framework::ClearAllCaches() { m_model.ClearCaches(); @@ -1063,7 +911,8 @@ void Framework::EnterForeground() void Framework::ShowAll() { SetMaxWorldRect(); - Invalidate(); + ///@TODO UVR + //Invalidate(); } /// @name Drag implementation. @@ -1076,90 +925,65 @@ m2::PointD Framework::GetPixelCenter() const void Framework::StartDrag(DragEvent const & e) { m_navigator.StartDrag(m_navigator.ShiftPoint(e.Pos()), ElapsedSeconds()); - m_informationDisplay.locationState()->DragStarted(); + ///@TODO UVR + //m_informationDisplay.locationState()->DragStarted(); -#ifndef USE_DRAPE - if (m_renderPolicy) - m_renderPolicy->StartDrag(); -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE } void Framework::DoDrag(DragEvent const & e) { m_navigator.DoDrag(m_navigator.ShiftPoint(e.Pos()), ElapsedSeconds()); -#ifndef USE_DRAPE - if (m_renderPolicy) - m_renderPolicy->DoDrag(); -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE } void Framework::StopDrag(DragEvent const & e) { m_navigator.StopDrag(m_navigator.ShiftPoint(e.Pos()), ElapsedSeconds(), true); - m_informationDisplay.locationState()->DragEnded(); + ///@TODO UVR + //m_informationDisplay.locationState()->DragEnded(); -#ifndef USE_DRAPE - if (m_renderPolicy) - { - m_renderPolicy->StopDrag(); - UpdateUserViewportChanged(); - } -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE } void Framework::StartRotate(RotateEvent const & e) { m_navigator.StartRotate(e.Angle(), ElapsedSeconds()); -#ifndef USE_DRAPE - m_renderPolicy->StartRotate(e.Angle(), ElapsedSeconds()); -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE - GetLocationState()->ScaleStarted(); + + ///@TODO UVR + //GetLocationState()->ScaleStarted(); } void Framework::DoRotate(RotateEvent const & e) { m_navigator.DoRotate(e.Angle(), ElapsedSeconds()); -#ifndef USE_DRAPE - m_renderPolicy->DoRotate(e.Angle(), ElapsedSeconds()); -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif } void Framework::StopRotate(RotateEvent const & e) { m_navigator.StopRotate(e.Angle(), ElapsedSeconds()); - shared_ptr<State> const & state = GetLocationState(); - state->Rotated(); - state->ScaleEnded(); -#ifndef USE_DRAPE - m_renderPolicy->StopRotate(e.Angle(), ElapsedSeconds()); -#else + ///@TODO UVR + //GetLocationState()->Rotated(); + //GetLocationState()->ScaleEnded(); if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif + UpdateUserViewportChanged(); } void Framework::Move(double azDir, double factor) { m_navigator.Move(azDir, factor); - - Invalidate(); + if (!m_drapeEngine.IsNull()) + m_drapeEngine->UpdateCoverage(m_navigator.Screen()); } //@} @@ -1168,14 +992,17 @@ void Framework::Move(double azDir, double factor) void Framework::ScaleToPoint(ScaleToPointEvent const & e, bool anim) { m2::PointD pt = m_navigator.ShiftPoint(e.Pt()); - GetLocationState()->CorrectScalePoint(pt); + ///@TODO UVR + //GetLocationState()->CorrectScalePoint(pt); if (anim) m_animController->AddTask(m_navigator.ScaleToPointAnim(pt, e.ScaleFactor(), 0.25)); else m_navigator.ScaleToPoint(pt, e.ScaleFactor(), 0); - Invalidate(); + if (!m_drapeEngine.IsNull()) + m_drapeEngine->UpdateCoverage(m_navigator.Screen()); + UpdateUserViewportChanged(); } @@ -1187,10 +1014,13 @@ void Framework::ScaleDefault(bool enlarge) void Framework::Scale(double scale) { m2::PointD center = GetPixelCenter(); - GetLocationState()->CorrectScalePoint(center); + ///@TODO UVR + //GetLocationState()->CorrectScalePoint(center); m_animController->AddTask(m_navigator.ScaleToPointAnim(center, scale, 0.25)); - Invalidate(); + if (!m_drapeEngine.IsNull()) + m_drapeEngine->UpdateCoverage(m_navigator.Screen()); + UpdateUserViewportChanged(); } @@ -1199,23 +1029,21 @@ void Framework::CalcScalePoints(ScaleEvent const & e, m2::PointD & pt1, m2::Poin pt1 = m_navigator.ShiftPoint(e.Pt1()); pt2 = m_navigator.ShiftPoint(e.Pt2()); - m_informationDisplay.locationState()->CorrectScalePoint(pt1, pt2); + ///@TODO UVR + //m_informationDisplay.locationState()->CorrectScalePoint(pt1, pt2); } - void Framework::StartScale(ScaleEvent const & e) { m2::PointD pt1, pt2; CalcScalePoints(e, pt1, pt2); - GetLocationState()->ScaleStarted(); + ///@TODO UVR + //GetLocationState()->ScaleStarted(); m_navigator.StartScale(pt1, pt2, ElapsedSeconds()); -#ifndef USE_DRAPE - if (m_renderPolicy) - m_renderPolicy->StartScale(); -#else + if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE + } void Framework::DoScale(ScaleEvent const & e) @@ -1224,16 +1052,12 @@ void Framework::DoScale(ScaleEvent const & e) CalcScalePoints(e, pt1, pt2); m_navigator.DoScale(pt1, pt2, ElapsedSeconds()); -#ifndef USE_DRAPE - if (m_renderPolicy) - m_renderPolicy->DoScale(); -#else if (!m_drapeEngine.IsNull()) m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE - if (m_navigator.IsRotatingDuringScale()) - GetLocationState()->Rotated(); + ///@TODO UVR +// if (m_navigator.IsRotatingDuringScale()) +// GetLocationState()->Rotated(); } void Framework::StopScale(ScaleEvent const & e) @@ -1243,18 +1067,14 @@ void Framework::StopScale(ScaleEvent const & e) m_navigator.StopScale(pt1, pt2, ElapsedSeconds()); -#ifndef USE_DRAPE - if (m_renderPolicy) + if (!m_drapeEngine.IsNull()) { - m_renderPolicy->StopScale(); + m_drapeEngine->UpdateCoverage(m_navigator.Screen()); UpdateUserViewportChanged(); } -#else - if (!m_drapeEngine.IsNull()) - m_drapeEngine->UpdateCoverage(m_navigator.Screen()); -#endif // USE_DRAPE - GetLocationState()->ScaleEnded(); + ///@TODO UVR + //GetLocationState()->ScaleEnded(); } //@} @@ -1333,16 +1153,17 @@ bool Framework::Search(search::SearchParams const & params) bool Framework::GetCurrentPosition(double & lat, double & lon) const { - shared_ptr<State> const & locationState = m_informationDisplay.locationState(); - - if (locationState->IsModeHasPosition()) - { - m2::PointD const pos = locationState->Position(); - lat = MercatorBounds::YToLat(pos.y); - lon = MercatorBounds::XToLon(pos.x); - return true; - } - else + ///@TODO UVR + //shared_ptr<State> const & locationState = m_informationDisplay.locationState(); + +// if (locationState->IsModeHasPosition()) +// { +// m2::PointD const pos = locationState->Position(); +// lat = MercatorBounds::YToLat(pos.y); +// lon = MercatorBounds::XToLon(pos.x); +// return true; +// } +// else return false; } @@ -1406,7 +1227,7 @@ void Framework::ShowSearchResult(search::Result const & res) } StopLocationFollow(); - ShowRectExVisibleScale(m_scales.GetRectForDrawScale(scale, center)); + ShowRectExVisibleScale(df::GetRectForDrawScale(scale, center)); search::AddressInfo info; info.MakeFrom(res); @@ -1441,8 +1262,9 @@ size_t Framework::ShowAllSearchResults(search::Results const & results) FillSearchResultsMarks(results); m_fixedSearchResults = count; - shared_ptr<State> state = GetLocationState(); - state->SetFixedZoom(); + ///@TODO UVR + //shared_ptr<State> state = GetLocationState(); + //state->SetFixedZoom(); // Setup viewport according to results. m2::AnyRectD viewport = m_navigator.Screen().GlobalRect(); m2::PointD const center = viewport.Center(); @@ -1477,8 +1299,9 @@ size_t Framework::ShowAllSearchResults(search::Results const & results) minInd = -1; } - if (minInd == -1) - Invalidate(); + if (minInd == -1); + ///@TODO UVR + //Invalidate(); return count; } @@ -1515,7 +1338,8 @@ void Framework::CancelInteractiveSearch() m_fixedSearchResults = 0; - Invalidate(); + ///@TODO UVR + //Invalidate(); } bool Framework::GetDistanceAndAzimut(m2::PointD const & point, @@ -1553,71 +1377,6 @@ bool Framework::GetDistanceAndAzimut(m2::PointD const & point, return (d < 25000.0); } -#ifndef USE_DRAPE -void Framework::SetRenderPolicy(RenderPolicy * renderPolicy) -{ - if (renderPolicy == nullptr) - m_bmManager.PrepareToShutdown(); - - m_bmManager.ResetScreen(); - m_guiController->ResetRenderParams(); - m_renderPolicy.reset(); - m_renderPolicy.reset(renderPolicy); - - if (m_renderPolicy) - { - m_renderPolicy->SetAnimController(m_animController.get()); - - m_renderPolicy->SetRenderFn(DrawModelFn()); - - m_scales.SetParams(m_renderPolicy->VisualScale(), m_renderPolicy->TileSize()); - - if (m_benchmarkEngine) - m_benchmarkEngine->Start(); - } -} - -void Framework::InitGuiSubsystem() -{ - if (m_renderPolicy) - { - gui::Controller::RenderParams rp(m_renderPolicy->Density(), - m_renderPolicy->DensityExactDPI(), - bind(&WindowHandle::invalidate, - m_renderPolicy->GetWindowHandle().get()), - m_renderPolicy->GetGlyphCache(), - m_renderPolicy->GetCacheScreen().get()); - - m_guiController->SetRenderParams(rp); - m_informationDisplay.setVisualScale(m_renderPolicy->VisualScale()); - m_balloonManager.RenderPolicyCreated(m_renderPolicy->Density()); - - if (m_width != 0 && m_height != 0) - OnSize(m_width, m_height); - - // init Bookmark manager - //@{ - graphics::Screen::Params pr; - pr.m_resourceManager = m_renderPolicy->GetResourceManager(); - pr.m_threadSlot = m_renderPolicy->GetResourceManager()->guiThreadSlot(); - pr.m_renderContext = m_renderPolicy->GetRenderContext(); - - pr.m_storageType = graphics::EMediumStorage; - pr.m_textureType = graphics::ESmallTexture; - - m_bmManager.SetScreen(m_renderPolicy->GetCacheScreen().get()); - //@} - - // Do full invalidate instead of any "pending" stuff. - Invalidate(); - } -} - -RenderPolicy * Framework::GetRenderPolicy() const -{ - return m_renderPolicy.get(); -} -#else void Framework::CreateDrapeEngine(dp::RefPointer<dp::OGLContextFactory> contextFactory, float vs, int w, int h) { typedef df::MapDataProvider::TReadIDsFn TReadIDsFn; @@ -1638,7 +1397,11 @@ void Framework::CreateDrapeEngine(dp::RefPointer<dp::OGLContextFactory> contextF m_drapeEngine.Reset(new df::DrapeEngine(contextFactory, df::Viewport(vs, 0, 0, w, h), df::MapDataProvider(idReadFn, featureReadFn))); OnSize(w, h); } -#endif // USE_DRAPE + +void Framework::DestroyDrapeEngine() +{ + m_drapeEngine.Destroy(); +} void Framework::SetMapStyle(MapStyle mapStyle) { @@ -1664,7 +1427,8 @@ void Framework::SetupMeasurementSystem() m_routingSession.SetTurnNotificationsUnits(units); m_informationDisplay.measurementSystemChanged(); - Invalidate(); + ///@TODO UVR + //Invalidate(); } string Framework::GetCountryCode(m2::PointD const & pt) const @@ -1674,11 +1438,6 @@ string Framework::GetCountryCode(m2::PointD const & pt) const return info.m_flag; } -gui::Controller * Framework::GetGuiController() const -{ - return m_guiController.get(); -} - anim::Controller * Framework::GetAnimController() const { return m_animController.get(); @@ -1709,7 +1468,7 @@ bool Framework::ShowMapForURL(string const & url) if (parser.Parse(url, pt, zoom)) { point = MercatorBounds::FromLatLon(pt.m_lat, pt.m_lon); - rect = m_scales.GetRectForDrawScale(zoom, point); + rect = df::GetRectForDrawScale(zoom, point); name = pt.m_name; result = NEED_CLICK; } @@ -1720,8 +1479,8 @@ bool Framework::ShowMapForURL(string const & url) if (m_ParsedMapApi.SetUriAndParse(url)) { - if (!m_ParsedMapApi.GetViewportRect(m_scales, rect)) - rect = ScalesProcessor::GetWorldRect(); + if (!m_ParsedMapApi.GetViewportRect(rect)) + rect = df::GetWorldRect(); if ((apiMark = m_ParsedMapApi.GetSinglePoint())) result = NEED_CLICK; @@ -1736,7 +1495,7 @@ bool Framework::ShowMapForURL(string const & url) if (info.IsValid()) { point = MercatorBounds::FromLatLon(info.m_lat, info.m_lon); - rect = m_scales.GetRectForDrawScale(info.m_zoom, point); + rect = df::GetRectForDrawScale(info.m_zoom, point); result = NEED_CLICK; } } @@ -1792,7 +1551,8 @@ void Framework::DisconnectMyPositionUpdate() { if (m_locationChangedSlotID != -1) { - GetLocationState()->RemovePositionChangedListener(m_locationChangedSlotID); + ///@TODO UVR + //GetLocationState()->RemovePositionChangedListener(m_locationChangedSlotID); m_locationChangedSlotID = -1; } } @@ -1802,90 +1562,80 @@ m2::RectD Framework::GetCurrentViewport() const return m_navigator.Screen().ClipRect(); } -bool Framework::IsBenchmarking() const -{ - return m_benchmarkEngine != 0; -} - -#ifndef USE_DRAPE namespace { -typedef shared_ptr<graphics::OverlayElement> OEPointerT; - -OEPointerT GetClosestToPivot(list<OEPointerT> const & l, m2::PointD const & pxPoint) -{ - double dist = numeric_limits<double>::max(); - OEPointerT res; +///@TODO UVR +//OEPointerT GetClosestToPivot(list<OEPointerT> const & l, m2::PointD const & pxPoint) +//{ +// double dist = numeric_limits<double>::max(); +// OEPointerT res; - for (list<OEPointerT>::const_iterator it = l.begin(); it != l.end(); ++it) - { - double const curDist = pxPoint.SquareLength((*it)->pivot()); - if (curDist < dist) - { - dist = curDist; - res = *it; - } - } +// for (list<OEPointerT>::const_iterator it = l.begin(); it != l.end(); ++it) +// { +// double const curDist = pxPoint.SquareLength((*it)->pivot()); +// if (curDist < dist) +// { +// dist = curDist; +// res = *it; +// } +// } - return res; -} +// return res; +//} } -#endif // USE_DRAPE bool Framework::GetVisiblePOI(m2::PointD const & pxPoint, m2::PointD & pxPivot, search::AddressInfo & info, feature::Metadata & metadata) const { -#ifndef USE_DRAPE - ASSERT(m_renderPolicy, ()); - graphics::OverlayElement::UserInfo ui; +///@TODO UVR +// graphics::OverlayElement::UserInfo ui; - { - // It seems like we don't need to lock frame here. - // Overlay locking and storing items as shared_ptr is enough here. - //m_renderPolicy->FrameLock(); +// { +// // It seems like we don't need to lock frame here. +// // Overlay locking and storing items as shared_ptr is enough here. +// //m_renderPolicy->FrameLock(); - m2::PointD const pt = m_navigator.ShiftPoint(pxPoint); - double const halfSize = TOUCH_PIXEL_RADIUS * GetVisualScale(); +// m2::PointD const pt = m_navigator.ShiftPoint(pxPoint); +// double const halfSize = TOUCH_PIXEL_RADIUS * GetVisualScale(); - list<OEPointerT> candidates; - m2::RectD const rect(pt.x - halfSize, pt.y - halfSize, - pt.x + halfSize, pt.y + halfSize); +// list<OEPointerT> candidates; +// m2::RectD const rect(pt.x - halfSize, pt.y - halfSize, +// pt.x + halfSize, pt.y + halfSize); - graphics::Overlay * frameOverlay = m_renderPolicy->FrameOverlay(); - frameOverlay->lock(); - frameOverlay->selectOverlayElements(rect, candidates); - frameOverlay->unlock(); +// graphics::Overlay * frameOverlay = m_renderPolicy->FrameOverlay(); +// frameOverlay->lock(); +// frameOverlay->selectOverlayElements(rect, candidates); +// frameOverlay->unlock(); - OEPointerT elem = GetClosestToPivot(candidates, pt); +// OEPointerT elem = GetClosestToPivot(candidates, pt); - if (elem) - ui = elem->userInfo(); +// if (elem) +// ui = elem->userInfo(); - //m_renderPolicy->FrameUnlock(); - } +// //m_renderPolicy->FrameUnlock(); +// } - if (ui.IsValid()) - { - Index::FeaturesLoaderGuard guard(m_model.GetIndex(), ui.m_featureID.m_mwmId); + //if (ui.IsValid()) + //{ + //Index::FeaturesLoaderGuard guard(m_model.GetIndex(), ui.m_featureID.m_mwmId); - FeatureType ft; - guard.GetFeatureByIndex(ui.m_featureID.m_index, ft); + //FeatureType ft; + //guard.GetFeatureByIndex(ui.m_featureID.m_index, ft); - ft.ParseMetadata(); - metadata = ft.GetMetadata(); + //ft.ParseMetadata(); + //metadata = ft.GetMetadata(); // @TODO experiment with other pivots - ASSERT_NOT_EQUAL(ft.GetFeatureType(), feature::GEOM_LINE, ()); - m2::PointD const center = feature::GetCenter(ft); + //ASSERT_NOT_EQUAL(ft.GetFeatureType(), feature::GEOM_LINE, ()); + //m2::PointD const center = feature::GetCenter(ft); - GetAddressInfo(ft, center, info); +// GetAddressInfo(ft, center, info); - pxPivot = GtoP(center); - return true; - } -#endif // USE_DRAPE +// pxPivot = GtoP(center); +// return true; +// } return false; } @@ -1958,10 +1708,10 @@ Navigator & Framework::GetNavigator() return m_navigator; } -shared_ptr<State> const & Framework::GetLocationState() const -{ - return m_informationDisplay.locationState(); -} +//shared_ptr<State> const & Framework::GetLocationState() const +//{ +// return m_informationDisplay.locationState(); +//} void Framework::ActivateUserMark(UserMark const * mark, bool needAnim) { @@ -1992,27 +1742,29 @@ UserMark const * Framework::GetUserMarkWithoutLogging(m2::PointD const & pxPoint { DisconnectMyPositionUpdate(); m2::AnyRectD rect; - m_navigator.GetTouchRect(pxPoint, TOUCH_PIXEL_RADIUS * GetVisualScale(), rect); - - shared_ptr<State> const & locationState = GetLocationState(); - if (locationState->IsModeHasPosition()) - { - m2::PointD const & glPivot = locationState->Position(); - if (rect.IsPointInside(glPivot)) - { - search::AddressInfo info; - info.m_name = m_stringsBundle.GetString("my_position"); - MyPositionMarkPoint * myPostition = UserMarkContainer::UserMarkForMyPostion(); - m_locationChangedSlotID = locationState->AddPositionChangedListener(bind(&Framework::UpdateSelectedMyPosition, this, _1)); - myPostition->SetPtOrg(glPivot); - myPostition->SetInfo(info); - return myPostition; - } - } + double vs = df::VisualParams::Instance().GetVisualScale(); + m_navigator.GetTouchRect(pxPoint, TOUCH_PIXEL_RADIUS * vs, rect); + + ///@TODO UVR + //shared_ptr<State> const & locationState = GetLocationState(); +// if (locationState->IsModeHasPosition()) +// { +// m2::PointD const & glPivot = locationState->Position(); +// if (rect.IsPointInside(glPivot)) +// { +// search::AddressInfo info; +// info.m_name = m_stringsBundle.GetString("my_position"); +// MyPositionMarkPoint * myPostition = UserMarkContainer::UserMarkForMyPostion(); +// m_locationChangedSlotID = locationState->AddPositionChangedListener(bind(&Framework::UpdateSelectedMyPosition, this, _1)); +// myPostition->SetPtOrg(glPivot); +// myPostition->SetInfo(info); +// return myPostition; +// } +// } m2::AnyRectD bmSearchRect; - double const pxWidth = TOUCH_PIXEL_RADIUS * GetVisualScale(); - double const pxHeight = (TOUCH_PIXEL_RADIUS + BM_TOUCH_PIXEL_INCREASE) * GetVisualScale(); + double const pxWidth = TOUCH_PIXEL_RADIUS * vs; + double const pxHeight = (TOUCH_PIXEL_RADIUS + BM_TOUCH_PIXEL_INCREASE) * vs; m_navigator.GetTouchRect(pxPoint + m2::PointD(0, BM_TOUCH_PIXEL_INCREASE), pxWidth, pxHeight, bmSearchRect); UserMark const * mark = m_bmManager.FindNearestUserMark( @@ -2158,48 +1910,56 @@ void Framework::UpdateSavedDataVersion() void Framework::BuildRoute(m2::PointD const & start, m2::PointD const & finish, uint32_t timeoutSec) { - ASSERT_THREAD_CHECKER(m_threadChecker, ("BuildRoute")); - - if (IsRoutingActive()) - CloseRouting(); - - SetLastUsedRouter(m_currentRouterType); - - auto readyCallback = [this](Route const & route, IRouter::ResultCode code) - { - ASSERT_THREAD_CHECKER(m_threadChecker, ("BuildRoute_ReadyCallback")); - - vector<storage::TIndex> absentCountries; - vector<storage::TIndex> absentRoutingIndexes; - if (code == IRouter::NoError) - { - InsertRoute(route); - GetLocationState()->RouteBuilded(); - ShowRectExVisibleScale(route.GetPoly().GetLimitRect()); - } - else - { - for (string const & name : route.GetAbsentCountries()) - { - storage::TIndex fileIndex = m_storage.FindIndexByFile(name); - if (m_storage.GetLatestLocalFile(fileIndex) && code != IRouter::FileTooOld) - absentRoutingIndexes.push_back(fileIndex); - else - absentCountries.push_back(fileIndex); - } - - if (code != IRouter::NeedMoreMaps) - RemoveRoute(); - } - CallRouteBuilded(code, absentCountries, absentRoutingIndexes); - }; - - m_routingSession.BuildRoute(start, finish, - [readyCallback](Route const & route, IRouter::ResultCode code) - { - GetPlatform().RunOnGuiThread(bind(readyCallback, route, code)); - }, - m_progressCallback, timeoutSec); + //ASSERT_THREAD_CHECKER(m_threadChecker, ("BuildRoute")); + + //shared_ptr<State> const & state = GetLocationState(); + //if (!state->IsModeHasPosition()) + //{ + // CallRouteBuilded(IRouter::NoCurrentPosition, vector<storage::TIndex>(), + // vector<storage::TIndex>()); + // return; + //} + + //if (IsRoutingActive()) + // CloseRouting(); + + //SetLastUsedRouter(m_currentRouterType); + + //auto readyCallback = [this](Route const & route, IRouter::ResultCode code) + //{ + // ASSERT_THREAD_CHECKER(m_threadChecker, ("BuildRoute_ReadyCallback")); + + // vector<storage::TIndex> absentCountries; + // vector<storage::TIndex> absentRoutingIndexes; + // if (code == IRouter::NoError) + // { + // InsertRoute(route); + // GetLocationState()->RouteBuilded(); + // ShowRectExVisibleScale(route.GetPoly().GetLimitRect()); + // } + // else + // { + // for (string const & name : route.GetAbsentCountries()) + // { + // storage::TIndex fileIndex = m_storage.FindIndexByFile(name); + // if (m_storage.GetLatestLocalFile(fileIndex) && code != IRouter::FileTooOld) + // absentRoutingIndexes.push_back(fileIndex); + // else + // absentCountries.push_back(fileIndex); + // } + + // if (code != IRouter::NeedMoreMaps) + // RemoveRoute(); + // } + // CallRouteBuilded(code, absentCountries, absentRoutingIndexes); + //}; + + //m_routingSession.BuildRoute(state->Position(), destination, + // [readyCallback](Route const & route, IRouter::ResultCode code) + // { + // GetPlatform().RunOnGuiThread(bind(readyCallback, route, code)); + // }, + // m_progressCallback, timeoutSec); } void Framework::SetRouter(RouterType type) @@ -2277,10 +2037,12 @@ void Framework::CloseRouting() { ASSERT_THREAD_CHECKER(m_threadChecker, ("CloseRouting")); - GetLocationState()->StopRoutingMode(); + ///@TODO UVR + //GetLocationState()->StopRoutingMode(); m_routingSession.Reset(); RemoveRoute(); - Invalidate(); + ///@TODO UVR + //Invalidate(); } void Framework::InsertRoute(Route const & route) @@ -2293,23 +2055,30 @@ void Framework::InsertRoute(Route const & route) return; } - vector<double> turnsDistances; - if (m_currentRouterType == RouterType::Vehicle) - { - route.GetTurnsDistances(turnsDistances); - } + // @TODO UVR + //vector<double> turns; + //if (m_currentRouterType == RouterType::Vehicle) + //{ + // turns::TTurnsGeom const & turnsGeom = route.GetTurnsGeometry(); + // if (!turnsGeom.empty()) + // { + // turns.reserve(turnsGeom.size()); + // for (size_t i = 0; i < turnsGeom.size(); i++) + // turns.push_back(turnsGeom[i].m_mercatorDistance); + // } + //} /// @todo Consider a style parameter for the route color. - graphics::Color routeColor; - if (m_currentRouterType == RouterType::Pedestrian) - routeColor = graphics::Color(5, 105, 175, 204); - else - routeColor = graphics::Color(30, 150, 240, 204); + //graphics::Color routeColor; + //if (m_currentRouterType == RouterType::Pedestrian) + // routeColor = graphics::Color(5, 105, 175, 204); + //else + // routeColor = graphics::Color(30, 150, 240, 204); - m_bmManager.SetRouteTrack(route.GetPoly(), turnsDistances, routeColor); + //m_bmManager.SetRouteTrack(route.GetPoly(), turns, routeColor); - m_informationDisplay.ResetRouteMatchingInfo(); - Invalidate(); + //m_informationDisplay.ResetRouteMatchingInfo(); + //Invalidate(); } void Framework::CheckLocationForRouting(GpsInfo const & info) @@ -2317,18 +2086,18 @@ void Framework::CheckLocationForRouting(GpsInfo const & info) if (!IsRoutingActive()) return; - m2::PointD const & position = GetLocationState()->Position(); - if (m_routingSession.OnLocationPositionChanged(position, info, m_model.GetIndex()) == RoutingSession::RouteNeedRebuild) - { - auto readyCallback = [this](Route const & route, IRouter::ResultCode code) - { - if (code == IRouter::NoError) - GetPlatform().RunOnGuiThread(bind(&Framework::InsertRoute, this, route)); - }; + ///@TODO UVR + //m2::PointD const & position = GetLocationState()->Position(); + //if (m_routingSession.OnLocationPositionChanged(position, info) == RoutingSession::RouteNeedRebuild) + //{ + // auto readyCallback = [this](Route const & route, IRouter::ResultCode code) + // { + // if (code == IRouter::NoError) + // GetPlatform().RunOnGuiThread(bind(&Framework::InsertRoute, this, route)); + // }; - m_routingSession.RebuildRoute(MercatorBounds::FromLatLon(info.m_latitude, info.m_longitude), - readyCallback, m_progressCallback, 0 /* timeoutSec */); - } + // m_routingSession.RebuildRoute(position, readyCallback, m_progressCallback, 0 /* timeoutSec */); + //} } void Framework::MatchLocationToRoute(location::GpsInfo & location, location::RouteMatchingInfo & routeMatchingInfo, @@ -2416,10 +2185,10 @@ void Framework::SetLastUsedRouter(RouterType type) void Framework::SetRouteStartPoint(m2::PointD const & pt, bool isValid) { - m_bmManager.SetRouteStartPoint(pt, isValid); + //m_bmManager.SetRouteStartPoint(pt); } void Framework::SetRouteFinishPoint(m2::PointD const & pt, bool isValid) { - m_bmManager.SetRouteFinishPoint(pt, isValid); + //m_bmManager.SetRouteFinishPoint(pt); } diff --git a/map/framework.hpp b/map/framework.hpp index 3f0c957413..a5ae0cd690 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -1,5 +1,8 @@ #pragma once +#include "map/events.hpp" +#include "drape/oglcontextfactory.hpp" +#include "drape_frontend/drape_engine.hpp" #include "map/feature_vec_model.hpp" #include "map/information_display.hpp" #include "map/location_state.hpp" @@ -17,18 +20,6 @@ #include "map/track.hpp" #include "map/country_tree.hpp" -#include "routing/routing_session.hpp" - -#include "render/events.hpp" -#include "render/scales_processor.hpp" -#ifndef USE_DRAPE - #include "render/render_policy.hpp" - #include "render/window_handle.hpp" -#else - #include "drape/oglcontextfactory.hpp" - #include "drape_frontend/drape_engine.hpp" -#endif // USE_DRAPE - #include "indexer/data_header.hpp" #include "indexer/map_style.hpp" @@ -40,12 +31,6 @@ #include "platform/country_defines.hpp" #include "platform/location.hpp" -#ifndef USE_DRAPE - #include "graphics/defines.hpp" - #include "graphics/screen.hpp" - #include "graphics/color.hpp" -#endif // USE_DRAPE - #include "geometry/rect2d.hpp" #include "geometry/screenbase.hpp" @@ -71,14 +56,10 @@ namespace storage class CountryInfoGetter; } -namespace gui { class Controller; } namespace anim { class Controller; } namespace routing { namespace turns{ class Settings; } } class CountryStatusDisplay; -class BenchmarkEngine; -struct FrameImage; -class CPUDrawer; /// Uncomment line to make fixed position settings and /// build version for screenshots. @@ -119,7 +100,6 @@ protected: search::QuerySaver m_searchQuerySaver; model::FeaturesFetcher m_model; - ScalesProcessor m_scales; Navigator m_navigator; Animator m_animator; @@ -127,13 +107,7 @@ protected: typedef vector<BookmarkCategory *>::iterator CategoryIter; -#ifndef USE_DRAPE - unique_ptr<RenderPolicy> m_renderPolicy; -#else dp::MasterPointer<df::DrapeEngine> m_drapeEngine; -#endif - - unique_ptr<CPUDrawer> m_cpuDrawer; double m_startForegroundTime; @@ -146,7 +120,6 @@ protected: storage::Storage m_storage; storage::CountryTree m_countryTree; - unique_ptr<gui::Controller> m_guiController; unique_ptr<anim::Controller> m_animController; InformationDisplay m_informationDisplay; @@ -166,11 +139,9 @@ protected: //return m_timer.ElapsedSeconds(); return 0.0; } -#ifndef USE_DRAPE - void DrawAdditionalInfo(shared_ptr<PaintEvent> const & e); -#endif // USE_DRAPE - BenchmarkEngine * m_benchmarkEngine; + ///@TODO UVR + ///void DrawAdditionalInfo(shared_ptr<PaintEvent> const & e); BookmarkManager m_bmManager; PinClickManager m_balloonManager; @@ -277,13 +248,8 @@ public: void OnCompassUpdate(location::CompassInfo const & info); //@} -#ifndef USE_DRAPE - void SetRenderPolicy(RenderPolicy * renderPolicy); - void InitGuiSubsystem(); - RenderPolicy * GetRenderPolicy() const; -#else void CreateDrapeEngine(dp::RefPointer<dp::OGLContextFactory> contextFactory, float vs, int w, int h); -#endif // USE_DRAPE + void DestroyDrapeEngine(); void SetMapStyle(MapStyle mapStyle); MapStyle GetMapStyle() const; @@ -311,24 +277,10 @@ public: void SetWidgetPivot(InformationDisplay::WidgetType widget, m2::PointD const & pivot); m2::PointD GetWidgetSize(InformationDisplay::WidgetType widget) const; - /// Safe function to get current visual scale. - /// Call it when you need do calculate pixel rect (not matter if m_renderPolicy == 0). - /// @return 1.0 if m_renderPolicy == 0 (possible for Android). - double GetVisualScale() const; - void PrepareToShutdown(); void SetupMeasurementSystem(); -#ifndef USE_DRAPE - RenderPolicy::TRenderFn DrawModelFn(); - - void DrawModel(shared_ptr<PaintEvent> const & e, - ScreenBase const & screen, - m2::RectD const & renderRect, - int baseScale, bool isTilingQuery); -#endif // USE_DRAPE - private: void InitCountryInfoGetter(); void InitSearchEngine(); @@ -389,9 +341,6 @@ public: void SetMaxWorldRect(); - void Invalidate(bool doForceUpdate = false); - void InvalidateRect(m2::RectD const & rect, bool doForceUpdate = false); - void SaveState(); bool LoadState(); @@ -409,21 +358,6 @@ public: /// Set correct viewport, parse API, show balloon. bool ShowMapForURL(string const & url); - bool NeedRedraw() const; - void SetNeedRedraw(bool flag); - - inline void XorQueryMaxScaleMode() - { - m_queryMaxScaleMode = !m_queryMaxScaleMode; - Invalidate(true); - } - - inline void SetQueryMaxScaleMode(bool mode) - { - m_queryMaxScaleMode = mode; - Invalidate(true); - } - /// Get classificator types for nearest features. /// @param[in] pxPoint Current touch point in device pixel coordinates. void GetFeatureTypes(m2::PointD const & pxPoint, vector<string> & types) const; @@ -443,14 +377,6 @@ public: bool GetVisiblePOI(m2::PointD const & pxPoint, m2::PointD & pxPivot, search::AddressInfo & info, feature::Metadata & metadata) const; void FindClosestPOIMetadata(m2::PointD const & pt, feature::Metadata & metadata) const; -#ifndef USE_DRAPE - virtual void BeginPaint(shared_ptr<PaintEvent> const & e); - /// Function for calling from platform dependent-paint function. - virtual void DoPaint(shared_ptr<PaintEvent> const & e); - - virtual void EndPaint(shared_ptr<PaintEvent> const & e); -#endif // USE_DRAPE - private: /// Always check rect in public function for minimal draw scale. void CheckMinGlobalRect(m2::RectD & rect) const; @@ -501,7 +427,7 @@ public: /// @name Scaling. //@{ - void ScaleToPoint(ScaleToPointEvent const & e, bool anim = true); + void ScaleToPoint(ScaleToPointEvent const & e, bool anim = false); void ScaleDefault(bool enlarge); void Scale(double scale); @@ -514,7 +440,6 @@ public: void StopScale(ScaleEvent const & e); //@} - gui::Controller * GetGuiController() const; anim::Controller * GetAnimController() const; Animator & GetAnimator(); @@ -526,8 +451,6 @@ public: m_stringsBundle.SetString(name, value); } - bool IsBenchmarking() const; - StringsBundle const & GetStringsBundle(); PinClickManager & GetBalloonManager() { return m_balloonManager; } @@ -536,7 +459,8 @@ public: /// the specified point is loaded bool IsCountryLoaded(m2::PointD const & pt) const; - shared_ptr<location::State> const & GetLocationState() const; + ///@TODO UVR + //shared_ptr<location::State> const & GetLocationState() const; void ActivateUserMark(UserMark const * mark, bool needAnim = true); bool HasActiveUserMark() const; UserMark const * GetUserMarkWithoutLogging(m2::PointD const & pxPoint, bool isLongPress); diff --git a/map/information_display.cpp b/map/information_display.cpp index 33290a17b8..bebee28b39 100644 --- a/map/information_display.cpp +++ b/map/information_display.cpp @@ -5,26 +5,13 @@ #include "map/ruler.hpp" #include "map/alfa_animation_task.hpp" -#include "render/drawer.hpp" - #include "anim/task.hpp" #include "anim/controller.hpp" -#include "gui/controller.hpp" -#include "gui/button.hpp" -#include "gui/cached_text_view.hpp" - -#include "graphics/defines.hpp" -#include "graphics/depth_constants.hpp" -#include "graphics/display_list.hpp" - #include "platform/platform.hpp" #include "geometry/transformations.hpp" - -using namespace graphics; - namespace { static int const RULLER_X_OFFSET = 6; @@ -43,7 +30,8 @@ namespace InformationDisplay::InformationDisplay(Framework * fw) : m_framework(fw) { - m_fontDesc.m_color = Color(0x4D, 0x4D, 0x4D, 0xCC); + ///@TODO UVR + //m_fontDesc.m_color = Color(0x4D, 0x4D, 0x4D, 0xCC); InitRuler(fw); InitCountryStatusDisplay(fw); @@ -61,143 +49,151 @@ InformationDisplay::InformationDisplay(Framework * fw) void InformationDisplay::InitRuler(Framework * fw) { - Ruler::Params p; + ///@TODO UVR +// Ruler::Params p; - p.m_depth = rulerDepth; - p.m_position = EPosAboveLeft; - p.m_framework = fw; +// p.m_depth = rulerDepth; +// p.m_position = EPosAboveLeft; +// p.m_framework = fw; - m_ruler.reset(new Ruler(p)); - m_ruler->setIsVisible(false); +// m_ruler.reset(new Ruler(p)); +// m_ruler->setIsVisible(false); } void InformationDisplay::InitCountryStatusDisplay(Framework * fw) { - CountryStatusDisplay::Params p(fw->GetCountryTree().GetActiveMapLayout()); + ///@TODO UVR +// CountryStatusDisplay::Params p(fw->GetCountryTree().GetActiveMapLayout()); - p.m_pivot = m2::PointD(0, 0); - p.m_position = EPosCenter; - p.m_depth = countryStatusDepth; +// p.m_pivot = m2::PointD(0, 0); +// p.m_position = EPosCenter; +// p.m_depth = countryStatusDepth; - m_countryStatusDisplay.reset(new CountryStatusDisplay(p)); +// m_countryStatusDisplay.reset(new CountryStatusDisplay(p)); } void InformationDisplay::InitCopyright(Framework * fw) { - gui::CachedTextView::Params p; + ///@TODO UVR +// gui::CachedTextView::Params p; - p.m_depth = rulerDepth; - p.m_position = EPosAboveLeft; - p.m_pivot = m2::PointD(0, 0); - p.m_text = "Map data © OpenStreetMap"; +// p.m_depth = rulerDepth; +// p.m_position = EPosAboveLeft; +// p.m_pivot = m2::PointD(0, 0); +// p.m_text = "Map data © OpenStreetMap"; - m_copyrightLabel.reset(new gui::CachedTextView(p)); +// m_copyrightLabel.reset(new gui::CachedTextView(p)); } void InformationDisplay::InitCompassArrow(Framework * fw) { - CompassArrow::Params p; + ///@TODO UVR +// CompassArrow::Params p; - p.m_position = EPosCenter; - p.m_depth = compassDepth; - p.m_pivot = m2::PointD(0, 0); - p.m_framework = fw; +// p.m_position = EPosCenter; +// p.m_depth = compassDepth; +// p.m_pivot = m2::PointD(0, 0); +// p.m_framework = fw; - m_compassArrow.reset(new CompassArrow(p)); - m_compassArrow->setIsVisible(false); +// m_compassArrow.reset(new CompassArrow(p)); +// m_compassArrow->setIsVisible(false); } void InformationDisplay::InitLocationState(Framework * fw) { - location::State::Params p; + ///@TODO UVR +// location::State::Params p; - p.m_position = EPosCenter; - p.m_depth = locationDepth; - p.m_pivot = m2::PointD(0, 0); - p.m_locationAreaColor = Color(30, 150, 240, 20); - p.m_framework = fw; +// p.m_position = EPosCenter; +// p.m_depth = locationDepth; +// p.m_pivot = m2::PointD(0, 0); +// p.m_locationAreaColor = Color(0x51, 0xA3, 0xDC, 0x46); +// p.m_framework = fw; - m_locationState.reset(new location::State(p)); +// m_locationState.reset(new location::State(p)); } void InformationDisplay::InitDebugLabel() { - gui::CachedTextView::Params p; + ///@TODO UVR +// gui::CachedTextView::Params p; - p.m_depth = debugDepth; - p.m_position = EPosAboveRight; - p.m_pivot = m2::PointD(0, 0); +// p.m_depth = debugDepth; +// p.m_position = EPosAboveRight; +// p.m_pivot = m2::PointD(0, 0); - m_debugLabel.reset(new gui::CachedTextView(p)); +// m_debugLabel.reset(new gui::CachedTextView(p)); } -void InformationDisplay::setController(gui::Controller * controller) -{ - m_controller = controller; - m_controller->AddElement(m_countryStatusDisplay); - m_controller->AddElement(m_compassArrow); - m_controller->AddElement(m_locationState); - m_controller->AddElement(m_ruler); - m_controller->AddElement(m_debugLabel); - - m_controller->AddElement(m_copyrightLabel); - shared_ptr<anim::Task> task(new AlfaAnimationTask(1.0, 0.0, 0.15, 3.0, m_framework)); - task->AddCallback(anim::Task::EEnded, [this] () - { - m_controller->RemoveElement(m_copyrightLabel); - m_copyrightLabel.reset(); - }); - - m_copyrightLabel->setAnimated([task] () - { - AlfaAnimationTask * t = static_cast<AlfaAnimationTask *>(task.get()); - return t->GetCurrentAlfa(); - }); - - m_framework->GetAnimController()->AddTask(task); -} + ///@TODO UVR +//void InformationDisplay::setController(gui::Controller * controller) +//{ +// m_controller = controller; +// m_controller->AddElement(m_countryStatusDisplay); +// m_controller->AddElement(m_compassArrow); +// m_controller->AddElement(m_locationState); +// m_controller->AddElement(m_ruler); +// m_controller->AddElement(m_debugLabel); + +// m_controller->AddElement(m_copyrightLabel); +// shared_ptr<anim::Task> task(new AlfaAnimationTask(1.0, 0.0, 0.15, 3.0, m_framework)); +// task->AddCallback(anim::Task::EEnded, [this] () +// { +// m_controller->RemoveElement(m_copyrightLabel); +// m_copyrightLabel.reset(); +// }); + +// m_copyrightLabel->setAnimated([task] () +// { +// AlfaAnimationTask * t = static_cast<AlfaAnimationTask *>(task.get()); +// return t->GetCurrentAlfa(); +// }); + +// m_framework->GetAnimController()->AddTask(task); +//} void InformationDisplay::SetWidgetPivotsByDefault(int screenWidth, int screenHeight) { - double rulerOffsX = RULLER_X_OFFSET; - double rulerOffsY = RULLER_Y_OFFSET; - double compassOffsX = COMPASS_X_OFFSET; - double compassOffsY = COMPASS_Y_OFFSET; - m2::RectI const rect = m2::RectI(0, 0, screenWidth, screenHeight); - -#ifdef OMIM_OS_ANDROID - if (GetPlatform().IsTablet()) - { - rulerOffsX = RULLER_X_OFFSET_L; - rulerOffsY = RULLER_Y_OFFSET_L; - compassOffsX = COMPASS_X_OFFSET_L; - compassOffsY = COMPASS_Y_OFFSET_L; - } -#endif - - double const vs = m_framework->GetVisualScale(); - m_countryStatusDisplay->setPivot(m2::PointD(rect.Center())); - - m2::PointD const size = m_compassArrow->GetPixelSize(); - m_compassArrow->setPivot(m2::PointD(compassOffsX * vs + size.x / 2.0, - rect.maxY() - compassOffsY * vs - size.y / 2.0)); - - m_ruler->setPivot(m2::PointD(rect.maxX() - rulerOffsX * vs, - rect.maxY() - rulerOffsY * vs)); - - if (m_copyrightLabel) - { - m_copyrightLabel->setPivot(m2::PointD(rect.maxX() - rulerOffsX * vs, - rect.maxY() - rulerOffsY * vs)); - } - m_debugLabel->setPivot(m2::PointD(rect.minX() + 10, - rect.minY() + 50 + 5 * vs)); + ///@TODO UVR +// double rulerOffsX = RULLER_X_OFFSET; +// double rulerOffsY = RULLER_Y_OFFSET; +// double compassOffsX = COMPASS_X_OFFSET; +// double compassOffsY = COMPASS_Y_OFFSET; +//#ifdef OMIM_OS_ANDROID +// if (GetPlatform().IsTablet()) +// { +// rulerOffsX = RULLER_X_OFFSET_L; +// rulerOffsY = RULLER_Y_OFFSET_L; +// compassOffsX = COMPASS_X_OFFSET_L; +// compassOffsY = COMPASS_Y_OFFSET_L; +// } +//#endif + +// double const vs = m_framework->GetVisualScale(); +// m_countryStatusDisplay->setPivot(m2::PointD(rect.Center())); + +// m2::PointD const size = m_compassArrow->GetPixelSize(); +// m_compassArrow->setPivot(m2::PointD(compassOffsX * vs + size.x / 2.0, +// rect.maxY() - compassOffsY * vs - size.y / 2.0)); + +// m_ruler->setPivot(m2::PointD(rect.maxX() - rulerOffsX * vs, +// rect.maxY() - rulerOffsY * vs)); + +// if (m_copyrightLabel) +// { +// m_copyrightLabel->setPivot(m2::PointD(rect.maxX() - rulerOffsX * vs, +// rect.maxY() - rulerOffsY * vs)); +// } + +// m_debugLabel->setPivot(m2::PointD(rect.minX() + 10, +// rect.minY() + 50 + 5 * vs)); } bool InformationDisplay::isCopyrightActive() const { - return m_copyrightLabel != nullptr; + ///@TODO UVR + return false;//m_copyrightLabel != nullptr; } void InformationDisplay::enableCopyright(bool doEnable) @@ -208,30 +204,34 @@ void InformationDisplay::enableCopyright(bool doEnable) void InformationDisplay::enableRuler(bool doEnable) { - if (doEnable) - m_ruler->AnimateShow(); - else - m_ruler->AnimateHide(); + ///@TODO UVR +// if (doEnable) +// m_ruler->AnimateShow(); +// else +// m_ruler->AnimateHide(); } bool InformationDisplay::isRulerEnabled() const { - return m_ruler->isVisible(); + ///@TODO UVR + return false;//m_ruler->isVisible(); } void InformationDisplay::setVisualScale(double visualScale) { - m_fontDesc.m_size = static_cast<uint32_t>(FONT_SIZE * visualScale); + ///@TODO UVR +// m_fontDesc.m_size = static_cast<uint32_t>(FONT_SIZE * visualScale); - m_ruler->setFont(gui::Element::EActive, m_fontDesc); - m_debugLabel->setFont(gui::Element::EActive, m_fontDesc); - if (m_copyrightLabel) - m_copyrightLabel->setFont(gui::Element::EActive, m_fontDesc); +// m_ruler->setFont(gui::Element::EActive, m_fontDesc); +// m_debugLabel->setFont(gui::Element::EActive, m_fontDesc); +// if (m_copyrightLabel) +// m_copyrightLabel->setFont(gui::Element::EActive, m_fontDesc); } void InformationDisplay::enableDebugInfo(bool doEnable) { - m_debugLabel->setIsVisible(doEnable); + ///@TODO UVR + //m_debugLabel->setIsVisible(doEnable); } void InformationDisplay::setDebugInfo(double frameDuration, int currentScale) @@ -239,45 +239,53 @@ void InformationDisplay::setDebugInfo(double frameDuration, int currentScale) ostringstream out; out << "Scale : " << currentScale; - m_debugLabel->setText(out.str()); + ///@TODO UVR + //m_debugLabel->setText(out.str()); } void InformationDisplay::enableCompassArrow(bool doEnable) { - if (doEnable) - m_compassArrow->AnimateShow(); - else - m_compassArrow->AnimateHide(); + ///@TODO UVR +// if (doEnable) +// m_compassArrow->AnimateShow(); +// else +// m_compassArrow->AnimateHide(); } bool InformationDisplay::isCompassArrowEnabled() const { - return m_compassArrow->isVisible(); + ///@TODO UVR + return false;//m_compassArrow->isVisible(); } void InformationDisplay::setCompassArrowAngle(double angle) { - m_compassArrow->SetAngle(angle); + ///@TODO UVR + //m_compassArrow->SetAngle(angle); } void InformationDisplay::setEmptyCountryIndex(storage::TIndex const & idx) { - m_countryStatusDisplay->SetCountryIndex(idx); + ///@TODO UVR + //m_countryStatusDisplay->SetCountryIndex(idx); } shared_ptr<CountryStatusDisplay> const & InformationDisplay::countryStatusDisplay() const { - return m_countryStatusDisplay; + ///@TODO UVR + return nullptr;//m_countryStatusDisplay; } shared_ptr<location::State> const & InformationDisplay::locationState() const { - return m_locationState; + ///@TODO UVR + return nullptr; //m_locationState; } void InformationDisplay::measurementSystemChanged() { - m_ruler->setIsDirtyLayout(true); + ///@TODO UVR + //m_ruler->setIsDirtyLayout(true); } void InformationDisplay::ResetRouteMatchingInfo() diff --git a/map/information_display.hpp b/map/information_display.hpp index da35f58fe3..da3ec8f20e 100644 --- a/map/information_display.hpp +++ b/map/information_display.hpp @@ -1,9 +1,5 @@ #pragma once -#include "gui/button.hpp" - -#include "graphics/font_desc.hpp" - #include "storage/index.hpp" #include "geometry/point2d.hpp" @@ -19,15 +15,6 @@ namespace location class State; } -class Drawer; - -namespace gui -{ - class Button; - class Controller; - class CachedTextView; -} - class Framework; class CountryStatusDisplay; class CompassArrow; @@ -38,16 +25,19 @@ class Ruler; class InformationDisplay { Framework * m_framework; - graphics::FontDesc m_fontDesc; + ///@TODO UVR + //graphics::FontDesc m_fontDesc; shared_ptr<Ruler> m_ruler; - gui::Controller * m_controller; + ///@TODO UVR + //gui::Controller * m_controller; shared_ptr<CountryStatusDisplay> m_countryStatusDisplay; shared_ptr<CompassArrow> m_compassArrow; shared_ptr<location::State> m_locationState; - shared_ptr<gui::CachedTextView> m_debugLabel; - shared_ptr<gui::CachedTextView> m_copyrightLabel; + ///@TODO UVR + //shared_ptr<gui::CachedTextView> m_debugLabel; + //shared_ptr<gui::CachedTextView> m_copyrightLabel; void InitRuler(Framework * fw); void InitDebugLabel(); @@ -67,14 +57,9 @@ public: }; InformationDisplay(Framework * framework); + //void setController(gui::Controller * controller); - void setController(gui::Controller * controller); - /*! - * \brief SetWidgetPivotsByDefault sets the default pivot points for all the widgets on the map. - * The pivot points can be overridden by a call of SetWidgetPivot() - * after Framework::OnSize() call. - */ - void SetWidgetPivotsByDefault(int screenWidth, int screenHeight); + void setDisplayRect(m2::RectI const & rect); void setVisualScale(double visualScale); bool isCopyrightActive() const; diff --git a/map/location_state.cpp b/map/location_state.cpp index 00f7e333d3..00dce157e8 100644 --- a/map/location_state.cpp +++ b/map/location_state.cpp @@ -3,19 +3,11 @@ #include "map/framework.hpp" #include "map/move_screen_task.hpp" -#ifndef USE_DRAPE -#include "graphics/display_list.hpp" -#include "graphics/icon.hpp" -#include "graphics/depth_constants.hpp" -#endif // USE_DRAPE - #include "anim/controller.hpp" #include "anim/task.hpp" #include "anim/angle_interpolation.hpp" #include "anim/segment_interpolation.hpp" -#include "gui/controller.hpp" - #include "indexer/mercator.hpp" #include "indexer/scales.hpp" @@ -105,12 +97,14 @@ public: { m_hasPendingAnimation = false; SetParams(m_pendingDstPos, m_pendingAngle); - m_fw->Invalidate(); + ///@TODO UVR + //m_fw->Invalidate(); } else if (m_idleFrames > 0) { --m_idleFrames; - m_fw->Invalidate(); + ///@TODO UVR + //m_fw->Invalidate(); } } @@ -185,7 +179,8 @@ private: m_fw->SetViewportCenter(currentPosition + rotateVector); m_fw->GetNavigator().SetAngle(currentAngle); - m_fw->Invalidate(); + ///@TODO UVR + //m_fw->Invalidate(); } void SetParams(m2::PointD const & dstPos, double dstAngle) @@ -251,13 +246,11 @@ string const LocationStateMode = "LastLocationStateMode"; } State::Params::Params() - : m_locationAreaColor(0, 0, 0, 0), - m_framework(0) + : m_framework(0) {} State::State(Params const & p) - : TBase(p), - m_modeInfo(Follow), + : m_modeInfo(Follow), m_errorRadius(0), m_position(0, 0), m_drawDirection(0.0), @@ -266,7 +259,6 @@ State::State(Params const & p) m_routeMatchingInfo(), m_currentSlotID(0) { - m_locationAreaColor = p.m_locationAreaColor; m_framework = p.m_framework; int mode = 0; @@ -277,7 +269,8 @@ State::State(Params const & p) if (Settings::Get("IsBenchmarking", isBench) && isBench) m_modeInfo = UnknownPosition; - setIsVisible(false); + ///@TODO UVR + //setIsVisible(false); } m2::PointD const & State::Position() const @@ -393,8 +386,9 @@ void State::TurnOff() { StopLocationFollow(); SetModeInfo(UnknownPosition); - setIsVisible(false); - invalidate(); + ///@TODO UVR + //setIsVisible(false); + //invalidate(); } void State::OnLocationUpdate(location::GpsInfo const & info, bool isNavigable, location::RouteMatchingInfo const & routeMatchingInfo) @@ -402,7 +396,8 @@ void State::OnLocationUpdate(location::GpsInfo const & info, bool isNavigable, l Assign(info, isNavigable); m_routeMatchingInfo = routeMatchingInfo; - setIsVisible(true); + ///@TODO UVR + //setIsVisible(true); if (GetMode() == PendingPosition) { @@ -413,7 +408,8 @@ void State::OnLocationUpdate(location::GpsInfo const & info, bool isNavigable, l AnimateFollow(); CallPositionChangedListeners(m_position); - invalidate(); + ///@TODO UVR + //invalidate(); } void State::OnCompassUpdate(location::CompassInfo const & info) @@ -421,7 +417,8 @@ void State::OnCompassUpdate(location::CompassInfo const & info) if (Assign(info)) { AnimateFollow(); - invalidate(); + ///@TODO UVR + //invalidate(); } } @@ -470,184 +467,41 @@ void State::InvalidatePosition() SetModeInfo(ChangeMode(m_modeInfo, UnknownPosition)); SetModeInfo(ChangeMode(m_modeInfo, PendingPosition)); m_afterPendingMode = currentMode; - setIsVisible(true); + ///@TODO UVR + //setIsVisible(true); } else if (currentMode == UnknownPosition) { m_afterPendingMode = Follow; - setIsVisible(false); + ///@TODO UVR + //setIsVisible(false); } - invalidate(); + ///@TODO UVR + //invalidate(); } void State::cache() { -#ifndef USE_DRAPE - CachePositionArrow(); - CacheRoutingArrow(); - CacheLocationMark(); - - m_controller->GetCacheScreen()->completeCommands(); -#endif // USE_DRAPE } void State::purge() { -#ifndef USE_DRAPE - m_positionArrow.reset(); - m_locationMarkDL.reset(); - m_positionMarkDL.reset(); - m_routingArrow.reset(); -#endif // USE_DRAPE } void State::update() { - if (isVisible() && IsModeHasPosition()) - { - m2::PointD const pxPosition = m_framework->GetNavigator().GtoP(Position()); - setPivot(pxPosition, false); + ///@TODO UVR +// if (isVisible() && IsModeHasPosition()) +// { +// m2::PointD const pxPosition = m_framework->GetNavigator().GtoP(Position()); +// setPivot(pxPosition, false); - if (m_animTask) - static_cast<RotateAndFollowAnim *>(m_animTask.get())->Update(); - } +// if (m_animTask) +// static_cast<RotateAndFollowAnim *>(m_animTask.get())->Update(); +// } } -void State::draw(graphics::OverlayRenderer * r, - math::Matrix<double, 3, 3> const & m) const -{ -#ifndef USE_DRAPE - if (!IsModeHasPosition() || !isVisible()) - return; - - checkDirtyLayout(); - - m2::PointD const pxPosition = m_framework->GetNavigator().GtoP(Position()); - double const pxErrorRadius = pxPosition.Length( - m_framework->GetNavigator().GtoP(Position() + m2::PointD(m_errorRadius, 0.0))); - - double const drawScale = pxErrorRadius / s_cacheRadius; - m2::PointD const & pivotPosition = GetPositionForDraw(); - - math::Matrix<double, 3, 3> locationDrawM = math::Shift( - math::Scale( - math::Identity<double, 3>(), - drawScale, - drawScale), - pivotPosition); - - math::Matrix<double, 3, 3> const drawM = locationDrawM * m; - // draw error sector - r->drawDisplayList(m_locationMarkDL.get(), drawM); - - // if we know look direction than we draw arrow - if (IsDirectionKnown()) - { - double rotateAngle = m_drawDirection + GetModelView().GetAngle(); - - math::Matrix<double, 3, 3> compassDrawM = math::Shift( - math::Rotate( - math::Identity<double, 3>(), - rotateAngle), - pivotPosition); - - if (!IsInRouting()) - r->drawDisplayList(m_positionArrow.get(), compassDrawM * m); - else - r->drawDisplayList(m_routingArrow.get(), compassDrawM * m); - } - else - r->drawDisplayList(m_positionMarkDL.get(), drawM); -#endif // USE_DRAPE -} - -#ifndef USE_DRAPE -void State::CachePositionArrow() -{ - m_positionArrow.reset(); - m_positionArrow.reset(m_controller->GetCacheScreen()->createDisplayList()); - CacheArrow(m_positionArrow.get(), "current-position-compas"); -} - -void State::CacheRoutingArrow() -{ - m_routingArrow.reset(); - m_routingArrow.reset(m_controller->GetCacheScreen()->createDisplayList()); - CacheArrow(m_routingArrow.get(), "current-routing-compas"); -} - -void State::CacheLocationMark() -{ - graphics::Screen * cacheScreen = m_controller->GetCacheScreen(); - - m_locationMarkDL.reset(); - m_locationMarkDL.reset(cacheScreen->createDisplayList()); - - m_positionMarkDL.reset(); - m_positionMarkDL.reset(cacheScreen->createDisplayList()); - - cacheScreen->beginFrame(); - cacheScreen->setDisplayList(m_locationMarkDL.get()); - - cacheScreen->fillSector(m2::PointD(0, 0), - 0, 2.0 * math::pi, - s_cacheRadius, - m_locationAreaColor, - graphics::locationFaultDepth); - - cacheScreen->setDisplayList(m_positionMarkDL.get()); - cacheScreen->drawSymbol(m2::PointD(0, 0), - "current-position", - graphics::EPosCenter, - graphics::locationDepth); - - cacheScreen->setDisplayList(0); - - cacheScreen->endFrame(); -} - -void State::CacheArrow(graphics::DisplayList * dl, const string & iconName) -{ - graphics::Screen * cacheScreen = m_controller->GetCacheScreen(); - graphics::Icon::Info info(iconName); - - graphics::Resource const * res = cacheScreen->fromID(cacheScreen->findInfo(info)); - m2::RectU const rect = res->m_texRect; - m2::PointD const halfArrowSize(rect.SizeX() / 2.0, rect.SizeY() / 2.0); - - cacheScreen->beginFrame(); - cacheScreen->setDisplayList(dl); - - m2::PointD coords[4] = - { - m2::PointD(-halfArrowSize.x, -halfArrowSize.y), - m2::PointD(-halfArrowSize.x, halfArrowSize.y), - m2::PointD( halfArrowSize.x, -halfArrowSize.y), - m2::PointD( halfArrowSize.x, halfArrowSize.y) - }; - - m2::PointF const normal(0.0, 0.0); - shared_ptr<graphics::gl::BaseTexture> texture = cacheScreen->pipeline(res->m_pipelineID).texture(); - - m2::PointF texCoords[4] = - { - texture->mapPixel(m2::PointF(rect.minX(), rect.minY())), - texture->mapPixel(m2::PointF(rect.minX(), rect.maxY())), - texture->mapPixel(m2::PointF(rect.maxX(), rect.minY())), - texture->mapPixel(m2::PointF(rect.maxX(), rect.maxY())) - }; - - cacheScreen->addTexturedStripStrided(coords, sizeof(m2::PointD), - &normal, 0, - texCoords, sizeof(m2::PointF), - 4, graphics::locationDepth, res->m_pipelineID); - cacheScreen->setDisplayList(0); - cacheScreen->endFrame(); -} - -#endif // USE_DRAPE - bool State::IsRotationActive() const { return IsDirectionKnown(); @@ -725,7 +579,8 @@ void State::SetModeInfo(uint16_t modeInfo, bool callListeners) CallStateModeListeners(); AnimateStateTransition(oldMode, newMode); - invalidate(); + ///@TODO UVR + //invalidate(); } } @@ -745,9 +600,11 @@ ScreenBase const & State::GetModelView() const m2::PointD const State::GetRaFModeDefaultPxBind() const { - m2::RectD const & pixelRect = GetModelView().PixelRect(); - return m2::PointD(pixelRect.Center().x, - pixelRect.maxY() - POSITION_Y_OFFSET * visualScale()); + return m2::PointD(); + ///@TODO UVR +// m2::RectD const & pixelRect = GetModelView().PixelRect(); +// return m2::PointD(pixelRect.Center().x, +// pixelRect.maxY() - POSITION_Y_OFFSET * visualScale()); } void State::StopCompassFollowing() @@ -851,7 +708,7 @@ void State::OnCompassTaped() AnimateFollow(); } -void State::OnSize(m2::RectD const & /*oldPixelRect*/) +void State::OnSize() { if (GetMode() == RotateAndFollow) { @@ -955,7 +812,9 @@ m2::PointD const State::GetPositionForDraw() const if (m_animTask != nullptr) return m_framework->GtoP(static_cast<RotateAndFollowAnim *>(m_animTask.get())->GetPositionForDraw()); - return pivot(); + return m2::PointD(); + ///@TODO UVR + //return pivot(); } } diff --git a/map/location_state.hpp b/map/location_state.hpp index 631acbf7b1..a62fde9772 100644 --- a/map/location_state.hpp +++ b/map/location_state.hpp @@ -1,7 +1,5 @@ #pragma once -#include "gui/element.hpp" - #include "geometry/point2d.hpp" #include "base/timer.hpp" @@ -15,11 +13,9 @@ #include "std/unique_ptr.hpp" #include "std/map.hpp" - class Framework; class ScreenBase; -namespace graphics { class DisplayList; } namespace anim { class Task;} namespace location @@ -30,14 +26,14 @@ namespace location // Class, that handles position and compass updates, // centers, scales and rotates map according to this updates // and draws location and compass marks. - class State : public gui::Element + class State { - typedef gui::Element TBase; public: - struct Params : TBase::Params + struct Params { - graphics::Color m_locationAreaColor; + ///@TODO UVR + //graphics::Color m_locationAreaColor; Framework * m_framework; Params(); }; @@ -100,7 +96,7 @@ namespace location void OnCompassTaped(); - void OnSize(m2::RectD const & oldPixelRect); + void OnSize(); /// @name GPS location updates routine. //@{ @@ -114,9 +110,9 @@ namespace location /// @name Override from graphics::OverlayElement and gui::Element. //@{ - virtual m2::RectD GetBoundRect() const { return m2::RectD(); } + ///@TODO UVR + //virtual m2::RectD GetBoundRect() const { return m2::RectD(); } - void draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m) const; bool hitTest(m2::PointD const & /*pt*/) const { return false; } void cache(); @@ -133,14 +129,6 @@ namespace location void CallPositionChangedListeners(m2::PointD const & pt); void CallStateModeListeners(); -#ifndef USE_DRAPE - void CachePositionArrow(); - void CacheRoutingArrow(); - void CacheLocationMark(); - - void CacheArrow(graphics::DisplayList * dl, string const & iconName); -#endif // USE_DRAPE - bool IsRotationActive() const; bool IsInRouting() const; bool IsRoutingFollowingDisabled() const; @@ -192,13 +180,6 @@ namespace location /// @name Compass Rendering Parameters //@{ -#ifndef USE_DRAPE - unique_ptr<graphics::DisplayList> m_positionArrow; - unique_ptr<graphics::DisplayList> m_locationMarkDL; - unique_ptr<graphics::DisplayList> m_positionMarkDL; - unique_ptr<graphics::DisplayList> m_routingArrow; -#endif // USE_DRAPE - graphics::Color m_locationAreaColor; //@} /// @name Rotation mode animation diff --git a/map/map_tests/bookmarks_test.cpp b/map/map_tests/bookmarks_test.cpp index 38184fe6ac..c7b051c275 100644 --- a/map/map_tests/bookmarks_test.cpp +++ b/map/map_tests/bookmarks_test.cpp @@ -637,10 +637,10 @@ UNIT_TEST(TrackParsingTest_1) TEST_EQUAL(cat->GetTracksCount(), 4, ()); string names[4] = { "Option1", "Pakkred1", "Pakkred2", "Pakkred3"}; - graphics::Color col[4] = {graphics::Color(230, 0, 0, 255), - graphics::Color(171, 230, 0, 255), - graphics::Color(0, 230, 117, 255), - graphics::Color(0, 59, 230, 255)}; + dp::Color col[4] = {dp::Color(230, 0, 0, 255), + dp::Color(171, 230, 0, 255), + dp::Color(0, 230, 117, 255), + dp::Color(0, 59, 230, 255)}; double length[4] = {3525.46839061, 27174.11393166, 27046.0456586, 23967.35765800}; for (size_t i = 0; i < ARRAY_SIZE(names); ++i) @@ -662,6 +662,6 @@ UNIT_TEST(TrackParsingTest_2) TEST_EQUAL(cat->GetTracksCount(), 1, ()); Track const * track = cat->GetTrack(0); TEST_EQUAL(track->GetName(), "XY", ()); - TEST_EQUAL(track->GetMainColor(), graphics::Color(57, 255, 32, 255), ()); + TEST_EQUAL(track->GetMainColor(), dp::Color(57, 255, 32, 255), ()); } diff --git a/map/map_tests/map_tests.pro b/map/map_tests/map_tests.pro index 57c4972ff2..713e978a5e 100644 --- a/map/map_tests/map_tests.pro +++ b/map/map_tests/map_tests.pro @@ -6,7 +6,7 @@ CONFIG -= app_bundle TEMPLATE = app ROOT_DIR = ../.. -DEPENDENCIES = map render gui routing search storage graphics indexer platform anim geometry coding base \ +DEPENDENCIES = map drape_frontend routing search storage drape indexer platform geometry coding base \ freetype fribidi expat protobuf tomcrypt jansson osrm stats_client minizip succinct DEPENDENCIES *= opening_hours diff --git a/map/map_tests/mwm_url_tests.cpp b/map/map_tests/mwm_url_tests.cpp index 8f295fded1..5b6d5f26bd 100644 --- a/map/map_tests/mwm_url_tests.cpp +++ b/map/map_tests/mwm_url_tests.cpp @@ -35,8 +35,7 @@ namespace m2::RectD GetViewport() { m2::RectD rect; - ScalesProcessor scales; - m_api.GetViewportRect(scales, rect); + m_api.GetViewportRect(rect); return rect; } string const & GetAppTitle() { return m_api.GetAppTitle(); } diff --git a/map/map_tests/navigator_test.cpp b/map/map_tests/navigator_test.cpp index cadeccbcbf..d35c769a5a 100644 --- a/map/map_tests/navigator_test.cpp +++ b/map/map_tests/navigator_test.cpp @@ -30,8 +30,7 @@ UNIT_TEST(Navigator_Scale2Points) { - ScalesProcessor scales; - Navigator navigator(scales); + Navigator navigator; navigator.OnSize(0, 0, 200, 100); navigator.SetFromRect(m2::AnyRectD(m2::RectD(0, 0, 8, 4))); @@ -69,8 +68,7 @@ namespace UNIT_TEST(Navigator_G2P_P2G) { - ScalesProcessor scales; - Navigator navigator(scales); + Navigator navigator; // Initialize. navigator.OnSize(0, 0, 200, 100); diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 8b2bc68f57..0f3479e2aa 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -1,6 +1,6 @@ -#include "mwm_url.hpp" +#include "map/mwm_url.hpp" -#include "render/scales_processor.hpp" +#include "drape_frontend/visual_params.hpp" #include "indexer/mercator.hpp" #include "indexer/scales.hpp" @@ -174,14 +174,14 @@ void ParsedMapApi::Reset() m_goBackOnBalloonClick = false; } -bool ParsedMapApi::GetViewportRect(ScalesProcessor const & scales, m2::RectD & rect) const +bool ParsedMapApi::GetViewportRect(m2::RectD & rect) const { ASSERT(m_controller != NULL, ()); size_t markCount = m_controller->GetUserMarkCount(); if (markCount == 1 && m_zoomLevel >= 1) { double zoom = min(static_cast<double>(scales::GetUpperComfortScale()), m_zoomLevel); - rect = scales.GetRectForDrawScale(zoom, m_controller->GetUserMark(0)->GetOrg()); + rect = df::GetRectForDrawScale(zoom, m_controller->GetUserMark(0)->GetOrg()); return true; } else diff --git a/map/mwm_url.hpp b/map/mwm_url.hpp index a0e71ee9dd..36495bc930 100644 --- a/map/mwm_url.hpp +++ b/map/mwm_url.hpp @@ -39,7 +39,7 @@ public: bool GoBackOnBalloonClick() const { return m_goBackOnBalloonClick; } /// @name Used in settings map viewport after invoking API. - bool GetViewportRect(ScalesProcessor const & scales, m2::RectD & rect) const; + bool GetViewportRect(m2::RectD & rect) const; UserMark const * GetSinglePoint() const; private: diff --git a/map/navigator.cpp b/map/navigator.cpp index b32a723df6..ff46c54999 100644 --- a/map/navigator.cpp +++ b/map/navigator.cpp @@ -1,5 +1,7 @@ #include "map/navigator.hpp" +#include "drape_frontend/visual_params.hpp" + #include "indexer/scales.hpp" #include "platform/settings.hpp" @@ -25,15 +27,14 @@ namespace } } -Navigator::Navigator(ScalesProcessor const & scales) - : m_scales(scales), - m_InAction(false) +Navigator::Navigator() + : m_InAction(false) { } void Navigator::SetFromRects(m2::AnyRectD const & glbRect, m2::RectD const & pxRect) { - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); m_Screen.SetFromRects(glbRect, pxRect); m_Screen = ScaleInto(m_Screen, worldR); @@ -47,7 +48,7 @@ void Navigator::SetFromRects(m2::AnyRectD const & glbRect, m2::RectD const & pxR void Navigator::SetFromRect(m2::AnyRectD const & r) { - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); m_Screen.SetFromRect(r); m_Screen = ScaleInto(m_Screen, worldR); @@ -81,7 +82,7 @@ double Navigator::ComputeMoveSpeed(m2::PointD const & /*p0*/, m2::PointD const & void Navigator::OnSize(int x0, int y0, int w, int h) { - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); m_Screen.OnSize(x0, y0, w, h); m_Screen = ShrinkAndScaleInto(m_Screen, worldR); @@ -123,8 +124,6 @@ ScreenBase const Navigator::ShrinkInto(ScreenBase const & screen, m2::RectD boun { ReduceRectHack(boundRect); -// ASSERT ( CanShrinkInto(screen, boundRect), () ); - ScreenBase res = screen; m2::RectD clipRect = res.ClipRect(); @@ -144,18 +143,6 @@ ScreenBase const Navigator::ShrinkInto(ScreenBase const & screen, m2::RectD boun return res; } -bool Navigator::CanRotateInto(ScreenBase const & screen, m2::RectD const & boundRect) -{ - /// @todo - return false; -} - -ScreenBase const Navigator::RotateInto(ScreenBase const & screen, m2::RectD const & boundRect) -{ - /// @todo - return screen; -} - ScreenBase const Navigator::ScaleInto(ScreenBase const & screen, m2::RectD boundRect) { ReduceRectHack(boundRect); @@ -319,7 +306,7 @@ void Navigator::DoDrag(m2::PointD const & pt, double /*timeInSec*/) if (m_LastPt1 == pt) return; - ScreenBase const s = ShrinkInto(m_StartScreen, m_scales.GetWorldRect()); + ScreenBase const s = ShrinkInto(m_StartScreen, df::GetWorldRect()); double dx = pt.x - m_StartPt1.x; double dy = pt.y - m_StartPt1.y; @@ -487,20 +474,20 @@ shared_ptr<anim::Task> Navigator::ScaleToPointAnim(m2::PointD const & pt, double bool Navigator::CheckMinScale(ScreenBase const & screen) const { m2::RectD const & r = screen.ClipRect(); - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); return (r.SizeX() <= worldR.SizeX() || r.SizeY() <= worldR.SizeY()); } bool Navigator::CheckMaxScale(ScreenBase const & screen) const { - return (m_scales.GetDrawTileScale(screen) <= scales::GetUpperStyleScale()); + return (df::GetDrawTileScale(screen) <= scales::GetUpperStyleScale()); } bool Navigator::CheckBorders(ScreenBase const & screen) const { m2::RectD const & r = screen.ClipRect(); - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); return (r.IsRectInside(worldR) || worldR.IsRectInside(r)); } @@ -521,7 +508,7 @@ bool Navigator::ScaleImpl(m2::PointD const & newPt1, m2::PointD const & newPt2, if (!skipMinScaleAndBordersCheck && !CheckMinScale(tmp)) return false; - m2::RectD const & worldR = m_scales.GetWorldRect(); + m2::RectD const & worldR = df::GetWorldRect(); if (!skipMinScaleAndBordersCheck && !CheckBorders(tmp)) { @@ -650,5 +637,5 @@ bool Navigator::Update(double timeInSec) int Navigator::GetDrawScale() const { - return m_scales.GetDrawTileScale(m_Screen); + return df::GetDrawTileScale(m_Screen); } diff --git a/map/navigator.hpp b/map/navigator.hpp index 7739c771c6..8c33800657 100644 --- a/map/navigator.hpp +++ b/map/navigator.hpp @@ -1,5 +1,4 @@ #pragma once -#include "render/scales_processor.hpp" #include "anim/task.hpp" @@ -14,7 +13,7 @@ class Navigator { public: - Navigator(ScalesProcessor const & scales); + Navigator(); void SetFromRect(m2::AnyRectD const & r); void CenterViewport(m2::PointD const & p); @@ -72,8 +71,6 @@ public: int GetDrawScale() const; private: - ScalesProcessor const & m_scales; - bool CheckMinScale(ScreenBase const & screen) const; bool CheckMaxScale(ScreenBase const & screen) const; bool CheckBorders(ScreenBase const & screen) const; @@ -81,9 +78,6 @@ private: static bool CanShrinkInto(ScreenBase const & screen, m2::RectD const & boundRect); static ScreenBase const ShrinkInto(ScreenBase const & screen, m2::RectD boundRect); - static bool CanRotateInto(ScreenBase const & screen, m2::RectD const & boundRect); - static ScreenBase const RotateInto(ScreenBase const & screen, m2::RectD const & boundRect); - static ScreenBase const ScaleInto(ScreenBase const & screen, m2::RectD boundRect); static ScreenBase const ShrinkAndScaleInto(ScreenBase const & screen, m2::RectD boundRect); diff --git a/map/pin_click_manager.cpp b/map/pin_click_manager.cpp index 3bf184df56..733743d4b3 100644 --- a/map/pin_click_manager.cpp +++ b/map/pin_click_manager.cpp @@ -6,23 +6,16 @@ #include "anim/task.hpp" #include "anim/controller.hpp" -#include "graphics/depth_constants.hpp" -#include "graphics/opengl/base_texture.hpp" -#include "graphics/display_list.hpp" -#include "graphics/icon.hpp" - #include "geometry/transformations.hpp" -#include "gui/controller.hpp" - - PinClickManager::PinClickManager(Framework & f) : m_f(f) {} void PinClickManager::Hide() { - m_f.Invalidate(); + ///@TODO UVR + //m_f.Invalidate(); } void PinClickManager::OnShowMark(UserMark const * mark) @@ -37,13 +30,15 @@ void PinClickManager::SetBalloonVisible(bool isVisible) if (!isVisible && m_f.HasActiveUserMark()) OnDismiss(); - m_f.Invalidate(); + ///@TODO UVR + //m_f.Invalidate(); } void PinClickManager::RemovePin() { m_f.ActivateUserMark(NULL); - m_f.Invalidate(); + ///@TODO UVR + //m_f.Invalidate(); } void PinClickManager::Dismiss() diff --git a/map/pin_click_manager.hpp b/map/pin_click_manager.hpp index 2750432607..ef307fbf68 100644 --- a/map/pin_click_manager.hpp +++ b/map/pin_click_manager.hpp @@ -1,8 +1,6 @@ #pragma once #include "map/bookmark.hpp" -#include "graphics/defines.hpp" - #include "geometry/point2d.hpp" #include "std/function.hpp" @@ -27,7 +25,6 @@ class PinClickManager public: PinClickManager(Framework & f); - void RenderPolicyCreated(graphics::EDensity density) {} void LocationChanged(location::GpsInfo const & info) {} void OnShowMark(UserMark const * mark); diff --git a/map/rotate_screen_task.cpp b/map/rotate_screen_task.cpp index 3a8cb49ff8..65c59ef2ed 100644 --- a/map/rotate_screen_task.cpp +++ b/map/rotate_screen_task.cpp @@ -19,7 +19,8 @@ void RotateScreenTask::OnStep(double ts) anim::AngleInterpolation::OnStep(ts); Navigator & nav = m_framework->GetNavigator(); nav.SetAngle(nav.Screen().GetAngle() + m_outAngle - prevAngle); - m_framework->Invalidate(); + ///@TODO UVR + //m_framework->Invalidate(); } void RotateScreenTask::OnEnd(double ts) @@ -27,7 +28,8 @@ void RotateScreenTask::OnEnd(double ts) anim::AngleInterpolation::OnEnd(ts); Navigator & nav = m_framework->GetNavigator(); nav.SetAngle(m_outAngle); - m_framework->Invalidate(); + ///@TODO UVR + //m_framework->Invalidate(); } bool RotateScreenTask::IsVisual() const diff --git a/map/ruler.cpp b/map/ruler.cpp index 7704db5a25..e539d3eb97 100644 --- a/map/ruler.cpp +++ b/map/ruler.cpp @@ -7,23 +7,12 @@ #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" -#include "gui/controller.hpp" - -#include "graphics/glyph.hpp" -#include "graphics/brush.hpp" -#include "graphics/screen.hpp" -#include "graphics/display_list.hpp" -#include "graphics/uniforms_holder.hpp" - #include "indexer/mercator.hpp" #include "geometry/transformations.hpp" #include "base/string_utils.hpp" - -using namespace graphics; - namespace { static const int RulerHeight = 2; @@ -104,7 +93,7 @@ Ruler::RulerFrame::RulerFrame(Framework & f, const Ruler::RulerFrame::frame_end_ Ruler::RulerFrame::RulerFrame(const Ruler::RulerFrame & other, const Ruler::RulerFrame::frame_end_fn & fn) - : m_f(other.m_f), m_dl(other.m_dl), m_textDL(other.m_textDL) + : m_f(other.m_f) { m_textLengthInPx = other.m_textLengthInPx; m_scale = other.m_scale; @@ -128,140 +117,139 @@ Ruler::RulerFrame::~RulerFrame() bool Ruler::RulerFrame::IsValid() const { - return m_dl != NULL && m_textDL != NULL; -} - -void Ruler::RulerFrame::Cache(const string & text, FontDesc const & f) -{ - gui::Controller * controller = m_f.GetGuiController(); - Screen * cs = controller->GetCacheScreen(); - double const k = m_f.GetVisualScale(); - - // Create solid line DL. - if (m_dl == NULL) - { - m_dl.reset(cs->createDisplayList()); - - cs->beginFrame(); - cs->setDisplayList(m_dl.get()); - cs->applyVarAlfaStates(); - - m2::PointD coords[] = - { - /* 3*/ m2::PointD(0.0, -RulerHeight * k), - /* 4*/ m2::PointD(0.0, 0.0), - /*14*/ m2::PointD(CacheLength, -RulerHeight * k), - /*15*/ m2::PointD(CacheLength, 0.0 * k), - }; - - Brush::Info const brushInfo(f.m_color); - Resource const * brushRes = cs->fromID(cs->mapInfo(brushInfo)); - m2::PointF const brushCenter = cs->pipeline(brushRes->m_pipelineID).texture()->mapPixel(brushRes->m_texRect.Center()); - - m2::PointF normal(0.0, 0.0); - cs->addTexturedStripStrided(coords , sizeof(m2::PointD), - &normal, 0, - &brushCenter, 0, ARRAY_SIZE(coords), - m_depth, brushRes->m_pipelineID); - - cs->setDisplayList(0); - cs->applyStates(); - cs->endFrame(); - } - - // Create text DL. - - ASSERT(!text.empty(), ()); - - { - m_textDL.reset(); - m_textDL.reset(cs->createDisplayList()); - - cs->beginFrame(); - cs->setDisplayList(m_textDL.get()); - cs->applyVarAlfaStates(); - - strings::UniString uniString = strings::MakeUniString(text); - size_t length = uniString.size(); - buffer_vector<Glyph::Info, 8> infos(length, Glyph::Info()); - buffer_vector<Resource::Info const *, 8> resInfos(length, NULL); - buffer_vector<uint32_t, 8> ids(length, 0); - buffer_vector<Resource const *, 8> glyphRes(length, NULL); - - for (size_t i = 0; i < uniString.size(); ++i) - { - infos[i] = Glyph::Info(GlyphKey(uniString[i], f.m_size, false, f.m_color), - controller->GetGlyphCache()); - - resInfos[i] = &infos[i]; - } - - if (cs->mapInfo(resInfos.data(), ids.data(), infos.size())) - { - for (size_t i = 0; i < ids.size(); ++i) - { - Resource const * res = cs->fromID(ids[i]); - glyphRes[i] = res; - } - - int32_t pipelineID = glyphRes[0]->m_pipelineID; - shared_ptr<gl::BaseTexture> texture = cs->pipeline(pipelineID).texture(); - double lengthFromStart = 0.0; - - buffer_vector<m2::PointF, 48> coords; - buffer_vector<m2::PointF, 48> normals; - buffer_vector<m2::PointF, 48> texCoords; - - for (size_t i = 0; i < uniString.size(); ++i) - { - double baseX = lengthFromStart; - coords.push_back(m2::PointD(baseX, 0.0)); - coords.push_back(m2::PointD(baseX, 0.0)); - coords.push_back(m2::PointD(baseX, 0.0)); - - coords.push_back(m2::PointD(baseX, 0.0)); - coords.push_back(m2::PointD(baseX, 0.0)); - coords.push_back(m2::PointD(baseX, 0.0)); - - m2::RectI resourceRect(glyphRes[i]->m_texRect); - resourceRect.Inflate(-1, -1); - double w = resourceRect.SizeX(); - double h = resourceRect.SizeY(); - lengthFromStart += infos[i].m_metrics.m_xAdvance; - - normals.push_back(m2::PointF(0.0, 0.0)); - normals.push_back(m2::PointF(0.0, -h)); - normals.push_back(m2::PointF(w , 0.0)); - - normals.push_back(m2::PointF(w , 0.0)); - normals.push_back(m2::PointF(0.0, -h)); - normals.push_back(m2::PointF(w , -h)); - - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.maxY()))); - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.minY()))); - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.maxY()))); - - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.maxY()))); - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.minY()))); - texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.minY()))); - } - - m_textLengthInPx = lengthFromStart; - cs->addTexturedListStrided(coords.data(), sizeof(m2::PointF), - normals.data(), sizeof(m2::PointF), - texCoords.data(), sizeof(m2::PointF), - coords.size(), m_depth, pipelineID); - } - - cs->setDisplayList(0); - cs->endFrame(); - } -} + return false; +} + +///@TODO UVR +//void Ruler::RulerFrame::Cache(const string & text, FontDesc const & f) +//{ +// gui::Controller * controller = m_f.GetGuiController(); +// Screen * cs = controller->GetCacheScreen(); +// double const k = m_f.GetVisualScale(); + +// // Create solid line DL. +// if (m_dl == NULL) +// { +// m_dl.reset(cs->createDisplayList()); + +// cs->beginFrame(); +// cs->setDisplayList(m_dl.get()); +// cs->applyVarAlfaStates(); + +// m2::PointD coords[] = +// { +// /* 3*/ m2::PointD(0.0, -RulerHeight * k), +// /* 4*/ m2::PointD(0.0, 0.0), +// /*14*/ m2::PointD(CacheLength, -RulerHeight * k), +// /*15*/ m2::PointD(CacheLength, 0.0 * k), +// }; + +// Brush::Info const brushInfo(f.m_color); +// Resource const * brushRes = cs->fromID(cs->mapInfo(brushInfo)); +// m2::PointF const brushCenter = cs->pipeline(brushRes->m_pipelineID).texture()->mapPixel(brushRes->m_texRect.Center()); + +// m2::PointF normal(0.0, 0.0); +// cs->addTexturedStripStrided(coords , sizeof(m2::PointD), +// &normal, 0, +// &brushCenter, 0, ARRAY_SIZE(coords), +// m_depth, brushRes->m_pipelineID); + +// cs->setDisplayList(0); +// cs->applyStates(); +// cs->endFrame(); +// } + +// // Create text DL. + +// ASSERT(!text.empty(), ()); + +// { +// m_textDL.reset(); +// m_textDL.reset(cs->createDisplayList()); + +// cs->beginFrame(); +// cs->setDisplayList(m_textDL.get()); +// cs->applyVarAlfaStates(); + +// strings::UniString uniString = strings::MakeUniString(text); +// size_t length = uniString.size(); +// buffer_vector<Glyph::Info, 8> infos(length, Glyph::Info()); +// buffer_vector<Resource::Info const *, 8> resInfos(length, NULL); +// buffer_vector<uint32_t, 8> ids(length, 0); +// buffer_vector<Resource const *, 8> glyphRes(length, NULL); + +// for (size_t i = 0; i < uniString.size(); ++i) +// { +// infos[i] = Glyph::Info(GlyphKey(uniString[i], f.m_size, false, f.m_color), +// controller->GetGlyphCache()); + +// resInfos[i] = &infos[i]; +// } + +// if (cs->mapInfo(resInfos.data(), ids.data(), infos.size())) +// { +// for (size_t i = 0; i < ids.size(); ++i) +// { +// Resource const * res = cs->fromID(ids[i]); +// glyphRes[i] = res; +// } + +// int32_t pipelineID = glyphRes[0]->m_pipelineID; +// shared_ptr<gl::BaseTexture> texture = cs->pipeline(pipelineID).texture(); +// double lengthFromStart = 0.0; + +// buffer_vector<m2::PointF, 48> coords; +// buffer_vector<m2::PointF, 48> normals; +// buffer_vector<m2::PointF, 48> texCoords; + +// for (size_t i = 0; i < uniString.size(); ++i) +// { +// double baseX = lengthFromStart; +// coords.push_back(m2::PointD(baseX, 0.0)); +// coords.push_back(m2::PointD(baseX, 0.0)); +// coords.push_back(m2::PointD(baseX, 0.0)); + +// coords.push_back(m2::PointD(baseX, 0.0)); +// coords.push_back(m2::PointD(baseX, 0.0)); +// coords.push_back(m2::PointD(baseX, 0.0)); + +// m2::RectI resourceRect(glyphRes[i]->m_texRect); +// resourceRect.Inflate(-1, -1); +// double w = resourceRect.SizeX(); +// double h = resourceRect.SizeY(); +// lengthFromStart += infos[i].m_metrics.m_xAdvance; + +// normals.push_back(m2::PointF(0.0, 0.0)); +// normals.push_back(m2::PointF(0.0, -h)); +// normals.push_back(m2::PointF(w , 0.0)); + +// normals.push_back(m2::PointF(w , 0.0)); +// normals.push_back(m2::PointF(0.0, -h)); +// normals.push_back(m2::PointF(w , -h)); + +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.maxY()))); +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.minY()))); +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.maxY()))); + +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.maxY()))); +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.minX(), resourceRect.minY()))); +// texCoords.push_back(texture->mapPixel(m2::PointF(resourceRect.maxX(), resourceRect.minY()))); +// } + +// m_textLengthInPx = lengthFromStart; +// cs->addTexturedListStrided(coords.data(), sizeof(m2::PointF), +// normals.data(), sizeof(m2::PointF), +// texCoords.data(), sizeof(m2::PointF), +// coords.size(), m_depth, pipelineID); +// } + +// cs->setDisplayList(0); +// cs->endFrame(); +// } +//} void Ruler::RulerFrame::Purge() { - m_dl.reset(); - m_textDL.reset(); } bool Ruler::RulerFrame::IsHidingAnim() const @@ -309,23 +297,24 @@ void Ruler::RulerFrame::HideAnimate(bool needPause) CreateAnim(1.0, 0.0, timeInterval, offset, false); } -void Ruler::RulerFrame::Draw(OverlayRenderer * r, const math::Matrix<double, 3, 3> & m) -{ - ASSERT(m_dl, ()); - ASSERT(m_textDL, ()); +///@TODO UVR +//void Ruler::RulerFrame::Draw(OverlayRenderer * r, const math::Matrix<double, 3, 3> & m) +//{ +// ASSERT(m_dl, ()); +// ASSERT(m_textDL, ()); - UniformsHolder holder; - holder.insertValue(ETransparency, GetCurrentAlfa()); +// UniformsHolder holder; +// holder.insertValue(ETransparency, GetCurrentAlfa()); - r->drawDisplayList(m_dl.get(), math::Shift( - math::Scale(m, m2::PointD(m_scale, 1.0)), - m_orgPt), &holder); +// r->drawDisplayList(m_dl.get(), math::Shift( +// math::Scale(m, m2::PointD(m_scale, 1.0)), +// m_orgPt), &holder); - double const yOffset = -(2 + TextOffsetFromRuler * m_f.GetVisualScale()); - r->drawDisplayList(m_textDL.get(), - math::Shift(m, m_orgPt + m2::PointF(CacheLength * m_scale - m_textLengthInPx, yOffset)), - &holder); -} +// double const yOffset = -(2 + TextOffsetFromRuler * m_f.GetVisualScale()); +// r->drawDisplayList(m_textDL.get(), +// math::Shift(m, m_orgPt + m2::PointF(CacheLength * m_scale - m_textLengthInPx, yOffset)), +// &holder); +//} void Ruler::RulerFrame::CreateAnim(double startAlfa, double endAlfa, double timeInterval, double timeOffset, bool isVisibleAtEnd) { @@ -421,38 +410,40 @@ Ruler::Params::Params() {} Ruler::Ruler(Params const & p) - : BaseT(p), - m_currentRangeIndex(InvalidUnitValue), + : m_currentRangeIndex(InvalidUnitValue), m_currSystem(0), m_framework(p.m_framework) { - setIsVisible(false); + ///@TODO UVR + //setIsVisible(false); } void Ruler::AnimateShow() { - RulerFrame * frame = GetMainFrame(); - if (!isVisible() && (!frame->IsAnimActive() || frame->IsHidingAnim())) - { - setIsVisible(true); - frame->ShowAnimate(false); - m_framework->Invalidate(); - } - else if (isVisible() && (frame->IsAnimActive() && frame->IsHidingAnim())) - { - frame->ShowAnimate(false); - m_framework->Invalidate(); - } + ///@TODO UVR +// RulerFrame * frame = GetMainFrame(); +// if (!isVisible() && (!frame->IsAnimActive() || frame->IsHidingAnim())) +// { +// setIsVisible(true); +// frame->ShowAnimate(false); +// m_framework->Invalidate(); +// } +// else if (isVisible() && (frame->IsAnimActive() && frame->IsHidingAnim())) +// { +// frame->ShowAnimate(false); +// m_framework->Invalidate(); +// } } void Ruler::AnimateHide() { - RulerFrame * frame = GetMainFrame(); - if (isVisible() && (!frame->IsAnimActive() || !frame->IsHidingAnim())) - { - frame->HideAnimate(true); - m_framework->Invalidate(); - } + ///@TODO UVR +// RulerFrame * frame = GetMainFrame(); +// if (isVisible() && (!frame->IsAnimActive() || !frame->IsHidingAnim())) +// { +// frame->HideAnimate(true); +// m_framework->Invalidate(); +// } } void Ruler::layout() @@ -480,22 +471,24 @@ void Ruler::layout() void Ruler::UpdateText(const string & text) { - RulerFrame * frame = GetMainFrame(); - if (frame->IsAnimActive() && frame->IsHidingAnim()) - return; + ///@TODO UVR +// RulerFrame * frame = GetMainFrame(); +// if (frame->IsAnimActive() && frame->IsHidingAnim()) +// return; - if (frame->IsValid()) - m_animFrame.reset(new RulerFrame(*frame, bind(&Ruler::AnimFrameAnimEnded, this, _1, _2))); +// if (frame->IsValid()) +// m_animFrame.reset(new RulerFrame(*frame, bind(&Ruler::AnimFrameAnimEnded, this, _1, _2))); - frame->Cache(text, font(EActive)); - if (isVisible()) - frame->ShowAnimate(true); +// frame->Cache(text, font(EActive)); +// if (isVisible()) +// frame->ShowAnimate(true); } void Ruler::MainFrameAnimEnded(bool isVisible, RulerFrame * frame) { - setIsVisible(isVisible); - ASSERT(GetMainFrame() == frame, ()); + ///@TODO UVR +// setIsVisible(isVisible); +// ASSERT(GetMainFrame() == frame, ()); } void Ruler::AnimFrameAnimEnded(bool /*isVisible*/, RulerFrame * frame) @@ -506,9 +499,11 @@ void Ruler::AnimFrameAnimEnded(bool /*isVisible*/, RulerFrame * frame) Ruler::RulerFrame * Ruler::GetMainFrame() { - if (!m_mainFrame) - m_mainFrame.reset(new RulerFrame(*m_framework, bind(&Ruler::MainFrameAnimEnded, this, _1, _2), depth())); - return m_mainFrame.get(); + ///@TODO UVR +// if (!m_mainFrame) +// m_mainFrame.reset(new RulerFrame(*m_framework, bind(&Ruler::MainFrameAnimEnded, this, _1, _2), depth())); +// return m_mainFrame.get(); + return nullptr; } Ruler::RulerFrame * Ruler::GetMainFrame() const @@ -524,74 +519,78 @@ void Ruler::purge() m_mainFrame.reset(); m_animFrame.reset(); - setIsVisible(false); + ///@TODO UVR + //setIsVisible(false); } void Ruler::update() { - double const k = visualScale(); + ///@TODO UVR +// double const k = visualScale(); - ScreenBase const & screen = m_framework->GetNavigator().Screen(); +// ScreenBase const & screen = m_framework->GetNavigator().Screen(); - int const rulerHeight = my::rounds(RulerHeight * k); - int const minPxWidth = my::rounds(MinPixelWidth * k); +// int const rulerHeight = my::rounds(RulerHeight * k); +// int const minPxWidth = my::rounds(MinPixelWidth * k); - // pivot() here is the down right point of the ruler. - // Get global points of ruler and distance according to minPxWidth. +// // pivot() here is the down right point of the ruler. +// // Get global points of ruler and distance according to minPxWidth. - m2::PointD pt1 = screen.PtoG(pivot()); - m2::PointD pt0 = screen.PtoG(pivot() - m2::PointD(minPxWidth, 0)); +// m2::PointD pt1 = screen.PtoG(pivot()); +// m2::PointD pt0 = screen.PtoG(pivot() - m2::PointD(minPxWidth, 0)); - double const distanceInMetres = MercatorBounds::DistanceOnEarth(pt0, pt1); +// double const distanceInMetres = MercatorBounds::DistanceOnEarth(pt0, pt1); - // convert metres to units for calculating m_metresDiff - double metersDiff = CalcMetresDiff(distanceInMetres); +// // convert metres to units for calculating m_metresDiff +// double metersDiff = CalcMetresDiff(distanceInMetres); - bool const higherThanMax = metersDiff > MaxMetersWidth; - bool const lessThanMin = metersDiff < MinMetersWidth; +// bool const higherThanMax = metersDiff > MaxMetersWidth; +// bool const lessThanMin = metersDiff < MinMetersWidth; - // Calculate width of the ruler in pixels. - double scalerWidthInPx = minPxWidth; +// // Calculate width of the ruler in pixels. +// double scalerWidthInPx = minPxWidth; - if (higherThanMax) - scalerWidthInPx = minPxWidth * 3 / 2; - else if (!lessThanMin) - { - // Here we need to convert metres to pixels according to angle - // (in global coordinates) of the ruler. +// if (higherThanMax) +// scalerWidthInPx = minPxWidth * 3 / 2; +// else if (!lessThanMin) +// { +// // Here we need to convert metres to pixels according to angle +// // (in global coordinates) of the ruler. - double const a = ang::AngleTo(pt1, pt0); - pt0 = MercatorBounds::GetSmPoint(pt1, cos(a) * metersDiff, sin(a) * metersDiff); +// double const a = ang::AngleTo(pt1, pt0); +// pt0 = MercatorBounds::GetSmPoint(pt1, cos(a) * metersDiff, sin(a) * metersDiff); - scalerWidthInPx = my::rounds(pivot().Length(screen.GtoP(pt0))); - } +// scalerWidthInPx = my::rounds(pivot().Length(screen.GtoP(pt0))); +// } - m2::PointD orgPt = pivot() + m2::PointD(-scalerWidthInPx / 2, rulerHeight / 2); +// m2::PointD orgPt = pivot() + m2::PointD(-scalerWidthInPx / 2, rulerHeight / 2); - if (position() & EPosLeft) - orgPt.x -= scalerWidthInPx / 2; +// if (position() & EPosLeft) +// orgPt.x -= scalerWidthInPx / 2; - if (position() & EPosRight) - orgPt.x += scalerWidthInPx / 2; +// if (position() & EPosRight) +// orgPt.x += scalerWidthInPx / 2; - if (position() & EPosAbove) - orgPt.y -= rulerHeight / 2; +// if (position() & EPosAbove) +// orgPt.y -= rulerHeight / 2; - if (position() & EPosUnder) - orgPt.y += rulerHeight / 2; +// if (position() & EPosUnder) +// orgPt.y += rulerHeight / 2; - RulerFrame * frame = GetMainFrame(); - frame->SetScale(scalerWidthInPx / CacheLength); - frame->SetOrgPoint(orgPt); +// RulerFrame * frame = GetMainFrame(); +// frame->SetScale(scalerWidthInPx / CacheLength); +// frame->SetOrgPoint(orgPt); } m2::RectD Ruler::GetBoundRect() const { - FontDesc const & f = font(EActive); - RulerFrame * frame = GetMainFrame(); - m2::PointD const org = frame->GetOrgPoint(); - m2::PointD const size = m2::PointD(CacheLength * frame->GetScale(), f.m_size * 2); - return m2::RectD(org - m2::PointD(size.x, 0.0), org + m2::PointD(0.0, size.y)); + ///@TODO UVR +// FontDesc const & f = font(EActive); +// RulerFrame * frame = GetMainFrame(); +// m2::PointD const org = frame->GetOrgPoint(); +// m2::PointD const size = m2::PointD(CacheLength * frame->GetScale(), f.m_size * 2); +// return m2::RectD(org - m2::PointD(size.x, 0.0), org + m2::PointD(0.0, size.y)); + return m2::RectD(); } void Ruler::cache() @@ -600,18 +599,19 @@ void Ruler::cache() update(); } -void Ruler::draw(OverlayRenderer * s, math::Matrix<double, 3, 3> const & m) const -{ - if (isVisible()) - { - checkDirtyLayout(); +///@TODO UVR +//void Ruler::draw(OverlayRenderer * s, math::Matrix<double, 3, 3> const & m) const +//{ +// if (isVisible()) +// { +// checkDirtyLayout(); - RulerFrame * frame = GetMainFrame(); - frame->Draw(s, m); - if (m_animFrame) - m_animFrame->Draw(s, m); - } -} +// RulerFrame * frame = GetMainFrame(); +// frame->Draw(s, m); +// if (m_animFrame) +// m_animFrame->Draw(s, m); +// } +//} int Ruler::GetTextOffsetFromLine() const { diff --git a/map/ruler.hpp b/map/ruler.hpp index 41e9fdc7fc..8881e0a0f9 100644 --- a/map/ruler.hpp +++ b/map/ruler.hpp @@ -1,6 +1,7 @@ #pragma once -#include "gui/element.hpp" +#include "geometry/point2d.hpp" +#include "geometry/rect2d.hpp" #include "std/shared_ptr.hpp" #include "std/unique_ptr.hpp" @@ -12,23 +13,11 @@ namespace anim class Task; } -namespace graphics -{ - class DisplayList; - - namespace gl - { - class OverlayRenderer; - } -} - class Framework; -class Ruler : public gui::Element +class Ruler { - typedef gui::Element BaseT; - class RulerFrame { public: @@ -43,7 +32,6 @@ class Ruler : public gui::Element bool IsValid() const; - void Cache(const string & text, const graphics::FontDesc & f); void Purge(); bool IsHidingAnim() const; bool IsAnimActive() const; @@ -54,7 +42,6 @@ class Ruler : public gui::Element void ShowAnimate(bool needPause); void HideAnimate(bool needPause); - void Draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m); private: void CreateAnim(double startAlfa, double endAlfa, @@ -66,9 +53,6 @@ class Ruler : public gui::Element private: Framework & m_f; - shared_ptr<graphics::DisplayList> m_dl; - shared_ptr<graphics::DisplayList> m_textDL; - int m_textLengthInPx; double m_scale; double m_depth; @@ -97,7 +81,7 @@ private: public: - struct Params : public Element::Params + struct Params { Framework * m_framework; Params(); @@ -112,8 +96,6 @@ public: //@{ virtual m2::RectD GetBoundRect() const; - void draw(graphics::OverlayRenderer * r, math::Matrix<double, 3, 3> const & m) const; - void update(); void layout(); void cache(); diff --git a/map/track.cpp b/map/track.cpp index 6eadcdbac6..b2ded1d4a2 100644 --- a/map/track.cpp +++ b/map/track.cpp @@ -2,11 +2,8 @@ #include "indexer/mercator.hpp" -#include "graphics/screen.hpp" -#include "graphics/pen.hpp" -#include "graphics/depth_constants.hpp" -#include "graphics/display_list.hpp" -#include "graphics/defines.hpp" +#include "drape/color.hpp" +#include "drape/drape_global.hpp" #include "geometry/distance.hpp" #include "geometry/simplification.hpp" @@ -20,7 +17,8 @@ Track::~Track() { - DeleteDisplayList(); + ///@TODO UVR + //DeleteDisplayList(); } Track * Track::CreatePersistent() @@ -36,17 +34,21 @@ float Track::GetMainWidth() const return m_outlines.back().m_lineWidth; } -const graphics::Color & Track::GetMainColor() const +dp::Color const & Track::GetMainColor() const { ASSERT(!m_outlines.empty(), ()); return m_outlines.back().m_color; } -void Track::DeleteDisplayList() const -{ - delete m_dList; - m_dList = nullptr; -} +///@TODO UVR +//void Track::DeleteDisplayList() const +//{ +// if (m_dList) +// { +// delete m_dList; +// m_dList = nullptr; +// } +//} void Track::AddOutline(TrackOutline const * outline, size_t arraySize) { @@ -58,10 +60,11 @@ void Track::AddOutline(TrackOutline const * outline, size_t arraySize) }); } -void Track::Draw(graphics::Screen * pScreen, MatrixT const & matrix) const -{ - pScreen->drawDisplayList(m_dList, matrix); -} +///@TODO UVR +//void Track::Draw(graphics::Screen * pScreen, MatrixT const & matrix) const +//{ +// pScreen->drawDisplayList(m_dList, matrix); +//} void Track::CreateDisplayListPolyline(graphics::Screen * dlScreen, PointContainerT const & pts) const { @@ -75,25 +78,26 @@ void Track::CreateDisplayListPolyline(graphics::Screen * dlScreen, PointContaine } } +///@TODO UVR void Track::CreateDisplayList(graphics::Screen * dlScreen, MatrixT const & matrix, bool isScaleChanged, int, double, location::RouteMatchingInfo const &) const { if (HasDisplayLists() && !isScaleChanged) return; - DeleteDisplayList(); +// DeleteDisplayList(); - m_dList = dlScreen->createDisplayList(); - dlScreen->beginFrame(); - dlScreen->setDisplayList(m_dList); +// m_dList = dlScreen->createDisplayList(); +// dlScreen->beginFrame(); +// dlScreen->setDisplayList(m_dList); - PointContainerT pts; - pts.reserve(m_polyline.GetSize()); - TransformAndSymplifyPolyline(m_polyline, matrix, GetMainWidth(), pts); - CreateDisplayListPolyline(dlScreen, pts); +// PointContainerT pts; +// pts.reserve(m_polyline.GetSize()); +// TransformAndSymplifyPolyline(m_polyline, matrix, GetMainWidth(), pts); +// CreateDisplayListPolyline(dlScreen, pts); - dlScreen->setDisplayList(0); - dlScreen->endFrame(); +// dlScreen->setDisplayList(0); +// dlScreen->endFrame(); } double Track::GetLengthMeters() const @@ -117,13 +121,14 @@ double Track::GetLengthMeters() const void Track::Swap(Track & rhs) { - swap(m_rect, rhs.m_rect); - swap(m_outlines, rhs.m_outlines); - m_name.swap(rhs.m_name); - m_polyline.Swap(rhs.m_polyline); - - DeleteDisplayList(); - rhs.DeleteDisplayList(); + ///@TODO UVR + //swap(m_rect, rhs.m_rect); + //swap(m_outlines, rhs.m_outlines); + //m_name.swap(rhs.m_name); + //m_polyline.Swap(rhs.m_polyline); + + //DeleteDisplayList(); + //rhs.DeleteDisplayList(); } void Track::CleanUp() const @@ -149,5 +154,3 @@ void TransformAndSymplifyPolyline(Track::PolylineD const & polyline, MatrixT con SimplifyDP(pts1.begin(), pts1.end(), width, m2::DistanceToLineSquare<m2::PointD>(), MakeBackInsertFunctor(pts)); } - - diff --git a/map/track.hpp b/map/track.hpp index a13dcb9c93..e9429af82d 100644 --- a/map/track.hpp +++ b/map/track.hpp @@ -1,22 +1,17 @@ #pragma once +#include "drape/drape_global.hpp" +#include "drape/color.hpp" + #include "geometry/polyline2d.hpp" #include "geometry/screenbase.hpp" -#include "graphics/color.hpp" -#include "graphics/defines.hpp" - #include "std/noncopyable.hpp" #include "base/buffer_vector.hpp" class Navigator; -namespace graphics -{ - class Screen; - class DisplayList; -} namespace location { class RouteMatchingInfo; @@ -52,13 +47,15 @@ public: /// @note Move semantics is used here. virtual Track * CreatePersistent(); float GetMainWidth() const; - graphics::Color const & GetMainColor() const; + dp::Color const & GetMainColor() const; + - virtual void Draw(graphics::Screen * pScreen, MatrixT const & matrix) const; - virtual void CreateDisplayList(graphics::Screen * dlScreen, MatrixT const & matrix, bool isScaleChanged, + /// @TODO UVR + //virtual void Draw(graphics::Screen * pScreen, MatrixT const & matrix) const; + //virtual void CreateDisplayList(graphics::Screen * dlScreen, MatrixT const & matrix, bool isScaleChanged, int, double, location::RouteMatchingInfo const &) const; - virtual void CleanUp() const; - virtual bool HasDisplayLists() const; + //virtual void CleanUp() const; + //virtual bool HasDisplayLists() const; /// @name Simple Getters-Setter //@{ @@ -66,7 +63,7 @@ public: struct TrackOutline { float m_lineWidth; - graphics::Color m_color; + dp::Color m_color; }; void AddOutline(TrackOutline const * outline, size_t arraySize); @@ -93,7 +90,8 @@ private: PolylineD m_polyline; m2::RectD m_rect; - mutable graphics::DisplayList * m_dList = nullptr; + ///@TODO UVR + //mutable graphics::DisplayList * m_dList = nullptr; }; void TransformPolyline(Track::PolylineD const & polyline, MatrixT const & matrix, PointContainerT & pts); diff --git a/map/user_mark.hpp b/map/user_mark.hpp index 73420bc00d..7ec98cc8f1 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -14,12 +14,6 @@ class UserMarkContainer; class PaintOverlayEvent; class UserMarkDLCache; - -namespace graphics -{ - class DisplayList; -} - class UserMarkCopy; class UserMark @@ -197,7 +191,7 @@ class ICustomDrawable : public UserMark public: ICustomDrawable(m2::PointD const & ptOrg, UserMarkContainer * container) : UserMark(ptOrg, container) {} bool IsCustomDrawable() const { return true; } - virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const = 0; + //virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const = 0; virtual double GetAnimScaleFactor() const = 0; virtual m2::PointD const & GetPixelOffset() const = 0; }; diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index fac33745d5..5b362d4f37 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -1,12 +1,7 @@ -#include "user_mark_container.hpp" -#include "framework.hpp" -#include "anim_phase_chain.hpp" +#include "map/user_mark_container.hpp" -#include "render/drawer.hpp" - -#include "graphics/display_list.hpp" -#include "graphics/screen.hpp" -#include "graphics/depth_constants.hpp" +#include "map/framework.hpp" +#include "map/anim_phase_chain.hpp" #include "geometry/transformations.hpp" @@ -72,50 +67,51 @@ namespace m2::PointD m_globalCenter; }; - void DrawUserMarkByPoint(double scale, - double visualScale, - m2::PointD const & pixelOfsset, - PaintOverlayEvent const & event, - graphics::DisplayList * dl, - m2::PointD const & ptOrg) - { -#ifndef USE_DRAPE - ScreenBase const & modelView = event.GetModelView(); - graphics::Screen * screen = GPUDrawer::GetScreen(event.GetDrawer()); - m2::PointD pxPoint = modelView.GtoP(ptOrg); - pxPoint += (pixelOfsset * visualScale); - math::Matrix<double, 3, 3> m = math::Shift(math::Scale(math::Identity<double, 3>(), - scale, scale), - pxPoint.x, pxPoint.y); - dl->draw(screen, m); -#endif // USE_DRAPE - } - - void DrawUserMarkImpl(double scale, - double visualScale, - m2::PointD const & pixelOfsset, - PaintOverlayEvent const & event, - graphics::DisplayList * dl, - UserMark const * mark) - { - DrawUserMarkByPoint(scale, visualScale, pixelOfsset, event, dl, mark->GetOrg()); - } - - void DrawUserMark(double scale, - double visualScale, - PaintOverlayEvent const & event, - UserMarkDLCache * cache, - UserMarkDLCache::Key const & defaultKey, - UserMark const * mark) - { - if (mark->IsCustomDrawable()) - { - ICustomDrawable const * drawable = static_cast<ICustomDrawable const *>(mark); - DrawUserMarkImpl(drawable->GetAnimScaleFactor(), visualScale, drawable->GetPixelOffset(), event, drawable->GetDisplayList(cache), mark); - } - else - DrawUserMarkImpl(scale, visualScale, m2::PointD(0.0, 0.0), event, cache->FindUserMark(defaultKey), mark); - } + ///@TODO UVR +// void DrawUserMarkByPoint(double scale, +// double visualScale, +// m2::PointD const & pixelOfsset, +// PaintOverlayEvent const & event, +// graphics::DisplayList * dl, +// m2::PointD const & ptOrg) +// { +//#ifndef USE_DRAPE +// ScreenBase const & modelView = event.GetModelView(); +// graphics::Screen * screen = event.GetDrawer()->screen(); +// m2::PointD pxPoint = modelView.GtoP(ptOrg); +// pxPoint += (pixelOfsset * visualScale); +// math::Matrix<double, 3, 3> m = math::Shift(math::Scale(math::Identity<double, 3>(), +// scale, scale), +// pxPoint.x, pxPoint.y); +// dl->draw(screen, m); +//#endif // USE_DRAPE +// } + +// void DrawUserMarkImpl(double scale, +// double visualScale, +// m2::PointD const & pixelOfsset, +// PaintOverlayEvent const & event, +// graphics::DisplayList * dl, +// UserMark const * mark) +// { +// DrawUserMarkByPoint(scale, visualScale, pixelOfsset, event, dl, mark->GetOrg()); +// } + +// void DrawUserMark(double scale, +// double visualScale, +// PaintOverlayEvent const & event, +// UserMarkDLCache * cache, +// UserMarkDLCache::Key const & defaultKey, +// UserMark const * mark) +// { +// if (mark->IsCustomDrawable()) +// { +// ICustomDrawable const * drawable = static_cast<ICustomDrawable const *>(mark); +// DrawUserMarkImpl(drawable->GetAnimScaleFactor(), visualScale, drawable->GetPixelOffset(), event, drawable->GetDisplayList(cache), mark); +// } +// else +// DrawUserMarkImpl(scale, visualScale, m2::PointD(0.0, 0.0), event, cache->FindUserMark(defaultKey), mark); +// } } UserMarkContainer::UserMarkContainer(double layerDepth, Framework & fm) @@ -153,14 +149,15 @@ UserMark const * UserMarkContainer::FindMarkInRect(m2::AnyRectD const & rect, do void UserMarkContainer::Draw(PaintOverlayEvent const & e, UserMarkDLCache * cache) const { -#ifndef USE_DRAPE - if (IsVisible() && IsDrawable()) - { - UserMarkDLCache::Key defaultKey(GetTypeName(), graphics::EPosCenter, m_layerDepth); - ForEachInRect(e.GetClipRect(), bind(&DrawUserMark, 1.0, m_framework.GetVisualScale(), - e, cache, defaultKey, _1)); - } -#endif // USE_DRAPE + ///@TODO UVR +//#ifndef USE_DRAPE +// if (IsVisible() && IsDrawable()) +// { +// UserMarkDLCache::Key defaultKey(GetTypeName(), graphics::EPosCenter, m_layerDepth); +// ForEachInRect(e.GetClipRect(), bind(&DrawUserMark, 1.0, m_framework.GetVisualScale(), +// e, cache, defaultKey, _1)); +// } +//#endif // USE_DRAPE } void UserMarkContainer::Clear(size_t skipCount/* = 0*/) @@ -318,18 +315,19 @@ void SelectionContainer::ActivateMark(UserMark const * userMark, bool needAnim) void SelectionContainer::Draw(const PaintOverlayEvent & e, UserMarkDLCache * cache) const { - if (m_container != NULL) - { - UserMarkDLCache::Key defaultKey(m_container->GetActiveTypeName(), - graphics::EPosCenter, - graphics::activePinDepth); - - DrawUserMarkByPoint(GetActiveMarkScale(), - m_fm.GetVisualScale(), - m2::PointD(0, 0), - e, cache->FindUserMark(defaultKey), - m_ptOrg); - } + ///@TODO UVR +// if (m_container != NULL) +// { +// UserMarkDLCache::Key defaultKey(m_container->GetActiveTypeName(), +// graphics::EPosCenter, +// graphics::activePinDepth); + +// DrawUserMarkByPoint(GetActiveMarkScale(), +// m_fm.GetVisualScale(), +// m2::PointD(0, 0), +// e, cache->FindUserMark(defaultKey), +// m_ptOrg); +// } } bool SelectionContainer::IsActive() const @@ -341,7 +339,8 @@ void SelectionContainer::StartActivationAnim() { m_animTask.reset(new PinAnimation(m_fm)); m_fm.GetAnimController()->AddTask(m_animTask); - m_fm.Invalidate(); + ///@TODO UVR + //m_fm.Invalidate(); } void SelectionContainer::KillActivationAnim() diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index 79b11aff09..92f5d878d7 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -19,12 +19,6 @@ namespace anim class Task; } -namespace graphics -{ - class DisplayList; - class Screen; -} - class UserMarkContainer : private noncopyable { public: @@ -62,7 +56,7 @@ public: UserMarkContainer(double layerDepth, Framework & fm); virtual ~UserMarkContainer(); - void SetScreen(graphics::Screen * cacheScreen); + //void SetScreen(graphics::Screen * cacheScreen); virtual Type GetType() const = 0; bool IsVisible() const { return m_isVisible; } diff --git a/map/user_mark_dl_cache.cpp b/map/user_mark_dl_cache.cpp index c58f443f25..51f33e97f0 100644 --- a/map/user_mark_dl_cache.cpp +++ b/map/user_mark_dl_cache.cpp @@ -2,101 +2,87 @@ #include "base/stl_add.hpp" -#include "graphics/display_list.hpp" -#include "graphics/screen.hpp" - -namespace -{ - struct Deleter - { - void operator()(pair<UserMarkDLCache::Key, graphics::DisplayList *> const & node) - { - delete node.second; - } - }; -} - -UserMarkDLCache::UserMarkDLCache(graphics::Screen * cacheScreen) - : m_cacheScreen(cacheScreen) +UserMarkDLCache::UserMarkDLCache() { } UserMarkDLCache::~UserMarkDLCache() { - DeleteRange(m_dls, Deleter()); - m_cacheScreen = NULL; } -graphics::DisplayList * UserMarkDLCache::FindUserMark(UserMarkDLCache::Key const & key) -{ - node_t node = m_dls.find(key); - if (node != m_dls.end()) - return node->second; +///@TODO UVR +//graphics::DisplayList * UserMarkDLCache::FindUserMark(UserMarkDLCache::Key const & key) +//{ +// node_t node = m_dls.find(key); +// if (node != m_dls.end()) +// return node->second; - return CreateDL(key); -} +// return CreateDL(key); +//} namespace { - m2::RectD CalcCoords(double const & halfSizeX, double const & halfSizeY, graphics::EPosition anchor) - { - m2::RectD result(-halfSizeX, -halfSizeY, halfSizeX, halfSizeY); - - if (anchor & graphics::EPosAbove) - result.Offset(0.0, -halfSizeY); - else if (anchor & graphics::EPosUnder) - result.Offset(0.0, halfSizeY); - - if (anchor & graphics::EPosLeft) - result.Offset(halfSizeX, 0.0); - else if (anchor & graphics::EPosRight) - result.Offset(-halfSizeX, 0.0); - - return result; - } +///@TODO UVR +// m2::RectD CalcCoords(double const & halfSizeX, double const & halfSizeY, graphics::EPosition anchor) +// { +// m2::RectD result(-halfSizeX, -halfSizeY, halfSizeX, halfSizeY); + +// if (anchor & graphics::EPosAbove) +// result.Offset(0.0, -halfSizeY); +// else if (anchor & graphics::EPosUnder) +// result.Offset(0.0, halfSizeY); + +// if (anchor & graphics::EPosLeft) +// result.Offset(halfSizeX, 0.0); +// else if (anchor & graphics::EPosRight) +// result.Offset(-halfSizeX, 0.0); + +// return result; +// } } -graphics::DisplayList * UserMarkDLCache::CreateDL(UserMarkDLCache::Key const & key) -{ - using namespace graphics; - - graphics::DisplayList * dl = m_cacheScreen->createDisplayList(); - m_cacheScreen->beginFrame(); - m_cacheScreen->setDisplayList(dl); - - Icon::Info infoKey(key.m_name); - Resource const * res = m_cacheScreen->fromID(m_cacheScreen->findInfo(infoKey)); - shared_ptr<gl::BaseTexture> texture = m_cacheScreen->pipeline(res->m_pipelineID).texture(); - - m2::RectU texRect = res->m_texRect; - m2::RectD coord = CalcCoords(texRect.SizeX() / 2.0, texRect.SizeY() / 2.0, key.m_anchor); - - m2::PointD coords[] = - { - coord.LeftBottom(), - coord.LeftTop(), - coord.RightBottom(), - coord.RightTop() - }; - m2::PointF normal(0.0, 0.0); - - m2::PointF texCoords[] = - { - texture->mapPixel(m2::PointF(texRect.minX(), texRect.minY())), - texture->mapPixel(m2::PointF(texRect.minX(), texRect.maxY())), - texture->mapPixel(m2::PointF(texRect.maxX(), texRect.minY())), - texture->mapPixel(m2::PointF(texRect.maxX(), texRect.maxY())) - }; - - m_cacheScreen->addTexturedStripStrided(coords, sizeof(m2::PointD), - &normal, 0, - texCoords, sizeof(m2::PointF), - 4, key.m_depthLayer, res->m_pipelineID); - - m_cacheScreen->setDisplayList(NULL); - m_cacheScreen->endFrame(); - - m_dls.insert(make_pair(key, dl)); - - return dl; -} +///@TODO UVR +//graphics::DisplayList * UserMarkDLCache::CreateDL(UserMarkDLCache::Key const & key) +//{ +// using namespace graphics; + +// graphics::DisplayList * dl = m_cacheScreen->createDisplayList(); +// m_cacheScreen->beginFrame(); +// m_cacheScreen->setDisplayList(dl); + +// Icon::Info infoKey(key.m_name); +// Resource const * res = m_cacheScreen->fromID(m_cacheScreen->findInfo(infoKey)); +// shared_ptr<gl::BaseTexture> texture = m_cacheScreen->pipeline(res->m_pipelineID).texture(); + +// m2::RectU texRect = res->m_texRect; +// m2::RectD coord = CalcCoords(texRect.SizeX() / 2.0, texRect.SizeY() / 2.0, key.m_anchor); + +// m2::PointD coords[] = +// { +// coord.LeftBottom(), +// coord.LeftTop(), +// coord.RightBottom(), +// coord.RightTop() +// }; +// m2::PointF normal(0.0, 0.0); + +// m2::PointF texCoords[] = +// { +// texture->mapPixel(m2::PointF(texRect.minX(), texRect.minY())), +// texture->mapPixel(m2::PointF(texRect.minX(), texRect.maxY())), +// texture->mapPixel(m2::PointF(texRect.maxX(), texRect.minY())), +// texture->mapPixel(m2::PointF(texRect.maxX(), texRect.maxY())) +// }; + +// m_cacheScreen->addTexturedStripStrided(coords, sizeof(m2::PointD), +// &normal, 0, +// texCoords, sizeof(m2::PointF), +// 4, key.m_depthLayer, res->m_pipelineID); + +// m_cacheScreen->setDisplayList(NULL); +// m_cacheScreen->endFrame(); + +// m_dls.insert(make_pair(key, dl)); + +// return dl; +//} diff --git a/map/user_mark_dl_cache.hpp b/map/user_mark_dl_cache.hpp index 8994f8c907..ffa7e1ba21 100644 --- a/map/user_mark_dl_cache.hpp +++ b/map/user_mark_dl_cache.hpp @@ -1,26 +1,21 @@ #pragma once +#include "drape/drape_global.hpp" + #include "base/math.hpp" -#include "graphics/defines.hpp" #include "std/map.hpp" -namespace graphics -{ - class Screen; - class DisplayList; -} - class UserMarkDLCache { public: struct Key { - Key(string const & name, graphics::EPosition anchor, double depthLayer) + Key(string const & name, dp::Anchor anchor, double depthLayer) : m_name(name), m_anchor(anchor), m_depthLayer(depthLayer) {} string m_name; - graphics::EPosition m_anchor; + dp::Anchor m_anchor; double m_depthLayer; bool operator < (Key const & other) const @@ -34,17 +29,15 @@ public: } }; - UserMarkDLCache(graphics::Screen * cacheScreen); + UserMarkDLCache(); ~UserMarkDLCache(); - graphics::DisplayList * FindUserMark(Key const & key); + ///@TODO UVR + //graphics::DisplayList * FindUserMark(Key const & key); private: - graphics::DisplayList * CreateDL(Key const & key); + //graphics::DisplayList * CreateDL(Key const & key); private: - graphics::Screen * m_cacheScreen; - typedef map<Key, graphics::DisplayList *> cache_t; - typedef cache_t::iterator node_t; - cache_t m_dls; + //graphics::Screen * m_cacheScreen; }; @@ -4,7 +4,6 @@ # gtool: build only generator_tool # map_designer: enable designer-related flags # no-tests: do not build tests for desktop -# drape: include drape libraries # # There are no supported options in CONFIG for mobile platforms. # Please use XCode or gradle/Android Studio. @@ -20,11 +19,6 @@ TEMPLATE = subdirs HEADERS += defines.hpp -# TODO(AlexZ): Why is it here? Drape should build on win32 too. -win32:CONFIG(drape) { - CONFIG -= drape -} - !iphone*:!tizen*:!android* { CONFIG *= desktop } @@ -54,18 +48,16 @@ SUBDIRS = 3party base coding geometry indexer routing } !CONFIG(gtool):!CONFIG(osrm) { - SUBDIRS *= anim graphics gui render search map + SUBDIRS *= drape drape_frontend search map CONFIG(map_designer):CONFIG(desktop) { SUBDIRS *= skin_generator } - CONFIG(drape) { - SUBDIRS *= drape drape_frontend - CONFIG(desktop) { - drape_head.depends = $$SUBDIRS - SUBDIRS *= drape_head - } + + CONFIG(desktop) { + drape_head.depends = $$SUBDIRS + SUBDIRS *= drape_head } CONFIG(desktop) { @@ -116,7 +108,7 @@ SUBDIRS = 3party base coding geometry indexer routing SUBDIRS *= search_tests MapDepLibs = 3party base coding geometry platform storage indexer search map \ - routing anim render gui graphics + routing drape drape_frontend map_tests.subdir = map/map_tests map_tests.depends = $$MapDepLibs @@ -158,21 +150,14 @@ SUBDIRS = 3party base coding geometry indexer routing generator_tests.depends = $$MapDepLibs routing generator generator_tests_support SUBDIRS *= generator_tests - # TODO(AlexZ): Do we really need them? - #SUBDIRS += render/render_tests - #SUBDIRS += graphics/graphics_tests - #SUBDIRS += gui/gui_tests - - CONFIG(drape) { - SUBDIRS *= qt_tstfrm + SUBDIRS *= qt_tstfrm - drape_tests.subdir = drape/drape_tests - drape_tests.depends = 3party base coding platform qt_tstfrm - SUBDIRS *= drape_tests + drape_tests.subdir = drape/drape_tests + drape_tests.depends = 3party base coding platform qt_tstfrm + SUBDIRS *= drape_tests - drape_frontend_tests.subdir = drape_frontend/drape_frontend_tests - drape_frontend_tests.depends = 3party base coding platform drape drape_frontend - SUBDIRS *= drape_frontend_tests - } + drape_frontend_tests.subdir = drape_frontend/drape_frontend_tests + drape_frontend_tests.depends = 3party base coding platform drape drape_frontend + SUBDIRS *= drape_frontend_tests } # !no-tests } # !gtool diff --git a/platform/platform.pro b/platform/platform.pro index 71be1f2ba2..b3e4954d45 100644 --- a/platform/platform.pro +++ b/platform/platform.pro @@ -29,23 +29,19 @@ INCLUDEPATH += $$ROOT_DIR/3party/jansson/src wifi_info_windows.cpp } else:macx-* { OBJECTIVE_SOURCES += platform_mac.mm \ - apple_video_timer.mm \ apple_location_service.mm } else:linux* { SOURCES += platform_linux.cpp } } else:iphone* { - OBJECTIVE_SOURCES += ios_video_timer.mm \ - platform_ios.mm + OBJECTIVE_SOURCES += platform_ios.mm } else:android* { SOURCES += platform_android.cpp \ - pthread_video_timer.cpp } else:tizen* { HEADERS += tizen_utils.hpp \ http_thread_tizen.hpp SOURCES += platform_tizen.cpp \ tizen_utils.cpp \ - pthread_video_timer.cpp \ http_thread_tizen.cpp \ } @@ -79,7 +75,6 @@ HEADERS += \ preferred_languages.hpp \ servers_list.hpp \ settings.hpp \ - video_timer.hpp \ SOURCES += \ chunks_download_strategy.cpp \ @@ -96,4 +91,3 @@ SOURCES += \ preferred_languages.cpp \ servers_list.cpp \ settings.cpp \ - video_timer.cpp \ diff --git a/platform/platform_tests/platform_tests.pro b/platform/platform_tests/platform_tests.pro index 405d130bcc..2047466119 100644 --- a/platform/platform_tests/platform_tests.pro +++ b/platform/platform_tests/platform_tests.pro @@ -33,4 +33,3 @@ SOURCES += \ location_test.cpp \ measurement_tests.cpp \ platform_test.cpp \ - video_timer_test.cpp \ diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 364e088df4..2225f734f0 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -3,17 +3,14 @@ #include "qt/slider_ctrl.hpp" #include "map/country_status_display.hpp" +#include "drape_frontend/visual_params.hpp" #include "render/render_policy.hpp" #include "render/frame_image.hpp" #include "search/result.hpp" -#include "gui/controller.hpp" - -#include "graphics/opengl/opengl.hpp" -#include "graphics/depth_constants.hpp" - +#include "platform/settings.hpp" #include "platform/platform.hpp" #include "platform/settings.hpp" @@ -38,73 +35,40 @@ namespace qt const unsigned LONG_TOUCH_MS = 1000; const unsigned SHORT_TOUCH_MS = 250; - QtVideoTimer::QtVideoTimer(TFrameFn frameFn) - : ::VideoTimer(frameFn) - {} - - void QtVideoTimer::start() - { - m_timer = new QTimer(); - QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(TimerElapsed())); - resume(); - } - - void QtVideoTimer::pause() - { - m_timer->stop(); - m_state = EPaused; - } - - void QtVideoTimer::resume() - { - m_timer->start(1000 / 60); - m_state = ERunning; - } - - void QtVideoTimer::stop() - { - pause(); - delete m_timer; - m_timer = 0; - m_state = EStopped; - } - - void QtVideoTimer::TimerElapsed() - { - m_frameFn(); - } - void DummyDismiss() {} DrawWidget::DrawWidget(QWidget * pParent) - : QGLWidget(pParent), - m_isInitialized(false), - m_isTimerStarted(false), + : m_contextFactory(nullptr), m_framework(new Framework()), m_isDrag(false), m_isRotate(false), - //m_redrawInterval(100), m_ratio(1.0), m_pScale(0), m_emulatingLocation(false) { + setSurfaceType(QSurface::OpenGLSurface); + + QObject::connect(this, SIGNAL(heightChanged(int)), this, SLOT(sizeChanged(int))); + QObject::connect(this, SIGNAL(widthChanged(int)), this, SLOT(sizeChanged(int))); + // Initialize with some stubs for test. PinClickManager & manager = GetBalloonManager(); manager.ConnectUserMarkListener(bind(&DrawWidget::OnActivateMark, this, _1)); manager.ConnectDismissListener(&DummyDismiss); - m_framework->GetCountryStatusDisplay()->SetDownloadCountryListener([this] (storage::TIndex const & idx, int opt) - { - storage::ActiveMapsLayout & layout = m_framework->GetCountryTree().GetActiveMapLayout(); - if (opt == -1) - layout.RetryDownloading(idx); - else - layout.DownloadMap(idx, static_cast<MapOptions>(opt)); - }); + ///@TODO UVR + //m_framework->GetCountryStatusDisplay()->SetDownloadCountryListener([this] (storage::TIndex const & idx, int opt) + //{ + // storage::ActiveMapsLayout & layout = m_framework->GetCountryTree().GetActiveMapLayout(); + // if (opt == -1) + // layout.RetryDownloading(idx); + // else + // layout.DownloadMap(idx, static_cast<storage::TMapOptions>(opt)); + //}); - m_framework->SetRouteBuildingListener([] (routing::IRouter::ResultCode, vector<storage::TIndex> const &, vector<storage::TIndex> const &) - { - }); + //m_framework->SetRouteBuildingListener([] (routing::IRouter::ResultCode, vector<storage::TIndex> const &) + //{ + //}); } DrawWidget::~DrawWidget() @@ -116,12 +80,8 @@ namespace qt { KillPressTask(); - ASSERT(isValid(), ()); - makeCurrent(); - m_framework->PrepareToShutdown(); - - m_videoTimer.reset(); + m_contextFactory.Destroy(); } void DrawWidget::SetScaleControl(QScaleSlider * pScale) @@ -131,11 +91,6 @@ namespace qt connect(m_pScale, SIGNAL(actionTriggered(int)), this, SLOT(ScaleChanged(int))); } - void DrawWidget::UpdateNow() - { - update(); - } - void DrawWidget::UpdateAfterSettingsChanged() { m_framework->SetupMeasurementSystem(); @@ -149,7 +104,6 @@ namespace qt ShowAll(); else { - UpdateNow(); UpdateScaleControl(); } } @@ -209,23 +163,6 @@ namespace qt UpdateScaleControl(); } - void DrawWidget::Repaint() - { - m_framework->Invalidate(); - } - - VideoTimer * DrawWidget::CreateVideoTimer() - { -//#ifdef OMIM_OS_MAC -// return CreateAppleVideoTimer(bind(&DrawWidget::DrawFrame, this)); -//#else - /// Using timer, which doesn't use the separate thread - /// for performing an action. This avoids race conditions in Framework. - /// see issue #717 - return new QtVideoTimer(bind(&DrawWidget::DrawFrame, this)); -//#endif - } - void DrawWidget::ScaleChanged(int action) { if (action != QAbstractSlider::SliderNoAction) @@ -236,119 +173,6 @@ namespace qt } } - void DrawWidget::initializeGL() - { - // we'll perform swap by ourselves, see issue #333 - setAutoBufferSwap(false); - - if (!m_isInitialized) - { -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) - m_ratio = dynamic_cast<QApplication*>(qApp)->devicePixelRatio(); -#endif - -#ifndef USE_DRAPE - m_videoTimer.reset(CreateVideoTimer()); - - InitRenderPolicy(); -#endif - - m_isInitialized = true; - } - } - - 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(); - - RenderPolicy::Params rpParams; - - QRect const & geometry = QApplication::desktop()->geometry(); - rpParams.m_screenWidth = L2D(geometry.width()); - rpParams.m_screenHeight = L2D(geometry.height()); - - if (m_ratio >= 1.5 || QApplication::desktop()->physicalDpiX() >= 180) - { - rpParams.m_density = graphics::EDensityXHDPI; - rpParams.m_exactDensityDPI = 320.; - } - else - { - rpParams.m_density = graphics::EDensityMDPI; - rpParams.m_exactDensityDPI = 160.; - } - rmParams.m_exactDensityDPI = rpParams.m_exactDensityDPI; - - rpParams.m_videoTimer = m_videoTimer.get(); - rpParams.m_useDefaultFB = true; - rpParams.m_rmParams = rmParams; - rpParams.m_primaryRC = primaryRC; - rpParams.m_skinName = "basic.skn"; - - 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) - { - m_framework->OnSize(w, h); - m_framework->Invalidate(); - - if (m_isInitialized && m_isTimerStarted) - DrawFrame(); - - UpdateScaleControl(); - } - - void DrawWidget::paintGL() - { - if (m_isInitialized && !m_isTimerStarted) - { - // timer should be started upon the first repaint request to fully initialized GLWidget. - m_isTimerStarted = true; - (void)m_framework->SetUpdatesEnabled(true); - } - - m_framework->Invalidate(); - } - - void DrawWidget::DrawFrame() - { -#ifndef USE_DRAPE - if (m_framework->NeedRedraw()) - { - makeCurrent(); - m_framework->SetNeedRedraw(false); - - shared_ptr<PaintEvent> paintEvent(new PaintEvent(m_framework->GetRenderPolicy()->GetDrawer().get())); - - m_framework->BeginPaint(paintEvent); - m_framework->DoPaint(paintEvent); - - // swapping buffers before ending the frame, see issue #333 - swapBuffers(); - - m_framework->EndPaint(paintEvent); - doneCurrent(); - } -#endif // USE_DRAPE - } - void DrawWidget::StartPressTask(m2::PointD const & pt, unsigned ms) { KillPressTask(); @@ -370,6 +194,28 @@ namespace qt m_framework->ActivateUserMark(pMark); } + void DrawWidget::CreateEngine() + { + m_framework->CreateDrapeEngine(m_contextFactory.GetRefPointer(), m_ratio, width(), height()); + } + + void DrawWidget::exposeEvent(QExposeEvent * e) + { + Q_UNUSED(e); + + if (isExposed()) + { + if (m_contextFactory.IsNull()) + { + m_ratio = devicePixelRatio(); + dp::ThreadSafeFactory * factory = new dp::ThreadSafeFactory(new QtOGLContextFactory(this)); + m_contextFactory = dp::MasterPointer<dp::OGLContextFactory>(factory); + CreateEngine(); + UpdateScaleControl(); + } + } + } + m2::PointD DrawWidget::GetDevicePoint(QMouseEvent * e) const { return m2::PointD(L2D(e->x()), L2D(e->y())); @@ -382,7 +228,7 @@ namespace qt RotateEvent DrawWidget::GetRotateEvent(QPoint const & pt) const { - QPoint const center = rect().center(); + QPoint const center = geometry().center(); return RotateEvent(L2D(center.x()), L2D(center.y()), L2D(pt.x()), L2D(pt.y())); } @@ -397,7 +243,7 @@ namespace qt void DrawWidget::mousePressEvent(QMouseEvent * e) { - QGLWidget::mousePressEvent(e); + TBase::mousePressEvent(e); KillPressTask(); @@ -405,8 +251,9 @@ namespace qt if (e->button() == Qt::LeftButton) { - if (m_framework->GetGuiController()->OnTapStarted(pt)) - return; + ///@TODO UVR +// if (m_framework->GetGuiController()->OnTapStarted(pt)) +// return; if (e->modifiers() & Qt::ControlModifier) { @@ -501,7 +348,7 @@ namespace qt void DrawWidget::mouseDoubleClickEvent(QMouseEvent * e) { - QGLWidget::mouseDoubleClickEvent(e); + TBase::mouseDoubleClickEvent(e); KillPressTask(); m_isCleanSingleClick = false; @@ -518,18 +365,19 @@ namespace qt void DrawWidget::mouseMoveEvent(QMouseEvent * e) { - QGLWidget::mouseMoveEvent(e); + TBase::mouseMoveEvent(e); m2::PointD const pt = GetDevicePoint(e); - if (!pt.EqualDxDy(m_taskPoint, m_framework->GetVisualScale() * 10.0)) + if (!pt.EqualDxDy(m_taskPoint, df::VisualParams::Instance().GetVisualScale() * 10.0)) { // moved far from start point - do not show balloon m_isCleanSingleClick = false; KillPressTask(); } - if (m_framework->GetGuiController()->OnTapMoved(pt)) - return; + ///@TODO UVR +// if (m_framework->GetGuiController()->OnTapMoved(pt)) +// return; if (m_isDrag) m_framework->DoDrag(GetDragEvent(e)); @@ -540,11 +388,12 @@ namespace qt void DrawWidget::mouseReleaseEvent(QMouseEvent * e) { - QGLWidget::mouseReleaseEvent(e); + TBase::mouseReleaseEvent(e); m2::PointD const pt = GetDevicePoint(e); - if (m_framework->GetGuiController()->OnTapEnded(pt)) - return; + ///@TODO UVR +// if (m_framework->GetGuiController()->OnTapEnded(pt)) +// return; if (!m_wasLongClick && m_isCleanSingleClick) { @@ -561,7 +410,7 @@ namespace qt void DrawWidget::keyReleaseEvent(QKeyEvent * e) { - QGLWidget::keyReleaseEvent(e); + TBase::keyReleaseEvent(e); StopRotating(e); @@ -569,6 +418,13 @@ namespace qt m_emulatingLocation = false; } + void DrawWidget::sizeChanged(int) + { + m_framework->OnSize(width(), height()); + + UpdateScaleControl(); + } + void DrawWidget::StopRotating(QMouseEvent * e) { if (m_isRotate && (e->button() == Qt::LeftButton)) @@ -597,11 +453,6 @@ namespace qt } } - //void DrawWidget::ScaleTimerElapsed() - //{ - // m_timer->stop(); - //} - void DrawWidget::wheelEvent(QWheelEvent * e) { if (!m_isDrag && !m_isRotate) @@ -614,7 +465,7 @@ namespace qt void DrawWidget::UpdateScaleControl() { - if (m_pScale) + if (m_pScale && isExposed()) { // don't send ScaleChanged m_pScale->SetPosWithBlockedSignals(m_framework->GetDrawScale()); @@ -627,17 +478,6 @@ namespace qt if (m_framework->GetCurrentPosition(lat, lon)) params.SetPosition(lat, lon); - // This stuff always returns system language (not keyboard input language). - /* - QInputMethod const * pIM = QApplication::inputMethod(); - if (pIM) - { - string const lang = pIM->locale().name().toStdString(); - LOG(LDEBUG, ("QT input language", lang)); - params.SetInputLanguage(lang); - } - */ - return m_framework->Search(params); } @@ -662,7 +502,8 @@ namespace qt void DrawWidget::CloseSearch() { - setFocus(); + ///@TODO UVR + //setFocus(); } void DrawWidget::OnLocationUpdate(location::GpsInfo const & info) @@ -671,28 +512,9 @@ namespace qt m_framework->OnLocationUpdate(info); } - void DrawWidget::QueryMaxScaleMode() - { - 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 + //@TODO UVR } void DrawWidget::SetRouter(routing::RouterType routerType) diff --git a/qt/draw_widget.hpp b/qt/draw_widget.hpp index f4d3a4890a..8e09f13968 100644 --- a/qt/draw_widget.hpp +++ b/qt/draw_widget.hpp @@ -1,61 +1,33 @@ #pragma once +#include "qt/qtoglcontextfactory.hpp" + #include "map/framework.hpp" #include "map/navigator.hpp" -#include "map/qgl_render_context.hpp" - -#include "render/window_handle.hpp" -#include "platform/video_timer.hpp" +#include "drape_frontend/drape_engine.hpp" #include "base/deferred_task.hpp" #include "std/unique_ptr.hpp" -#include <QtCore/QTimer> -#include <QtOpenGL/qgl.h> +#include <QtGui/QWindow> namespace qt { class QScaleSlider; - class DrawWidget; - - class QtVideoTimer : public QObject, public ::VideoTimer - { - Q_OBJECT - private: - QTimer * m_timer; - - public: - QtVideoTimer(::VideoTimer::TFrameFn frameFn); - - void resume(); - void pause(); - - void start(); - void stop(); - - protected: - Q_SLOT void TimerElapsed(); - }; - - class DrawWidget : public QGLWidget + class DrawWidget : public QWindow { - bool m_isInitialized; - bool m_isTimerStarted; + typedef QWindow TBase; + dp::MasterPointer<dp::OGLContextFactory> m_contextFactory; unique_ptr<Framework> m_framework; - unique_ptr<VideoTimer> m_videoTimer; bool m_isDrag; bool m_isRotate; - //QTimer * m_timer; - //QTimer * m_animTimer; - //size_t m_redrawInterval; - qreal m_ratio; inline int L2D(int px) const { return px * m_ratio; } @@ -77,11 +49,7 @@ namespace qt void ScaleMinusLight(); void ShowAll(); - void Repaint(); void ScaleChanged(int action); - //void ScaleTimerElapsed(); - - void QueryMaxScaleMode(); public: DrawWidget(QWidget * pParent); @@ -99,7 +67,6 @@ namespace qt void SaveState(); void LoadState(); - void UpdateNow(); void UpdateAfterSettingsChanged(); void PrepareShutdown(); @@ -111,26 +78,17 @@ namespace qt void SetRouter(routing::RouterType routerType); protected: - VideoTimer * CreateVideoTimer(); - - protected: void StartPressTask(m2::PointD const & pt, unsigned ms); void KillPressTask(); void OnPressTaskEvent(m2::PointD const & pt, unsigned ms); void OnActivateMark(unique_ptr<UserMarkCopy> pCopy); - protected: - /// @name Overriden from base_type. - //@{ - virtual void initializeGL(); - virtual void resizeGL(int w, int h); - virtual void paintGL(); - //@} - - void DrawFrame(); + void CreateEngine(); + protected: /// @name Overriden from QWidget. //@{ + virtual void exposeEvent(QExposeEvent * e); virtual void mousePressEvent(QMouseEvent * e); virtual void mouseDoubleClickEvent(QMouseEvent * e); virtual void mouseMoveEvent(QMouseEvent * e); @@ -139,6 +97,8 @@ namespace qt virtual void keyReleaseEvent(QKeyEvent * e); //@} + Q_SLOT void sizeChanged(int); + private: void UpdateScaleControl(); void StopDragging(QMouseEvent * e); diff --git a/qt/mainwindow.cpp b/qt/mainwindow.cpp index 7661b6caf4..3d341d0bef 100644 --- a/qt/mainwindow.cpp +++ b/qt/mainwindow.cpp @@ -1,11 +1,6 @@ #include "qt/mainwindow.hpp" -#ifndef USE_DRAPE #include "qt/draw_widget.hpp" -#else -#include "qt/drape_surface.hpp" -#endif - #include "qt/slider_ctrl.hpp" #include "qt/about.hpp" #include "qt/preferences_dialog.hpp" @@ -54,24 +49,20 @@ namespace qt MainWindow::MainWindow() : m_locationService(CreateDesktopLocationService(*this)) { -#ifndef USE_DRAPE m_pDrawWidget = new DrawWidget(this); - setCentralWidget(m_pDrawWidget); -#else - m_pDrawWidget = new DrapeSurface(); QSurfaceFormat format = m_pDrawWidget->requestedFormat(); format.setDepthBufferSize(16); m_pDrawWidget->setFormat(format); QWidget * w = QWidget::createWindowContainer(m_pDrawWidget, this); w->setMouseTracking(true); setCentralWidget(w); -#endif // USE_DRAPE - shared_ptr<location::State> locState = m_pDrawWidget->GetFramework().GetLocationState(); - locState->AddStateModeListener([this] (location::State::Mode mode) - { - LocationStateModeChanged(mode); - }); + ///@TODO UVR +// shared_ptr<location::State> locState = m_pDrawWidget->GetFramework().GetLocationState(); +// locState->AddStateModeListener([this] (location::State::Mode mode) +// { +// LocationStateModeChanged(mode); +// }); CreateNavigationBar(); CreateSearchBarAndPanel(); @@ -141,10 +132,9 @@ MainWindow::MainWindow() : m_locationService(CreateDesktopLocationService(*this) } #endif // NO_DOWNLOADER -#ifndef USE_DRAPE m_pDrawWidget->UpdateAfterSettingsChanged(); -#endif // USE_DRAPE - locState->InvalidatePosition(); + ///@TODO UVR + //locState->InvalidatePosition(); } #if defined(Q_WS_WIN) @@ -240,7 +230,6 @@ void MainWindow::CreateNavigationBar() pToolBar->setOrientation(Qt::Vertical); pToolBar->setIconSize(QSize(32, 32)); -#ifndef USE_DRAPE { // add navigation hot keys hotkey_t arr[] = { @@ -264,7 +253,6 @@ void MainWindow::CreateNavigationBar() addAction(pAct); } } -#endif // USE_DRAPE { // add search button with "checked" behavior @@ -289,7 +277,6 @@ void MainWindow::CreateNavigationBar() m_pMyPositionAction->setToolTip(tr("My Position")); // #endif -#ifndef USE_DRAPE // add view actions 1 button_t arr[] = { { QString(), 0, 0 }, @@ -297,10 +284,8 @@ void MainWindow::CreateNavigationBar() { tr("Scale +"), ":/navig64/plus.png", SLOT(ScalePlus()) } }; add_buttons(pToolBar, arr, ARRAY_SIZE(arr), m_pDrawWidget); -#endif // USE_DRAPE } -#ifndef USE_DRAPE // add scale slider QScaleSlider * pScale = new QScaleSlider(Qt::Vertical, this, 20); pScale->SetRange(2, scales::GetUpperScale()); @@ -316,7 +301,6 @@ void MainWindow::CreateNavigationBar() }; add_buttons(pToolBar, arr, ARRAY_SIZE(arr), m_pDrawWidget); } -#endif // USE_DRAPE #ifndef NO_DOWNLOADER { @@ -361,8 +345,9 @@ void MainWindow::OnLocationUpdated(location::GpsInfo const & info) void MainWindow::OnMyPosition() { - if (m_pMyPositionAction->isEnabled()) - m_pDrawWidget->GetFramework().GetLocationState()->SwitchToNextMode(); + ///@TODO UVR + //if (m_pMyPositionAction->isEnabled()) + // m_pDrawWidget->GetFramework().GetLocationState()->SwitchToNextMode(); } void MainWindow::OnSearchButtonClicked() @@ -398,12 +383,10 @@ void MainWindow::ShowUpdateDialog() void MainWindow::CreateSearchBarAndPanel() { -#ifndef USE_DRAPE CreatePanelImpl(0, Qt::RightDockWidgetArea, tr("Search"), QKeySequence(), 0); SearchPanel * panel = new SearchPanel(m_pDrawWidget, m_Docks[0]); m_Docks[0]->setWidget(panel); -#endif // USE_DRAPE } void MainWindow::CreatePanelImpl(size_t i, Qt::DockWidgetArea area, QString const & name, @@ -429,11 +412,7 @@ void MainWindow::CreatePanelImpl(size_t i, Qt::DockWidgetArea area, QString cons void MainWindow::closeEvent(QCloseEvent * e) { -#ifndef USE_DRAPE m_pDrawWidget->PrepareShutdown(); -#else - m_pDrawWidget->GetFramework().PrepareToShutdown(); -#endif // USE_DRAPE e->accept(); } diff --git a/qt/mainwindow.hpp b/qt/mainwindow.hpp index ce3cad23cb..2ee9cbcadf 100644 --- a/qt/mainwindow.hpp +++ b/qt/mainwindow.hpp @@ -12,29 +12,19 @@ #include <QtWidgets/QMainWindow> #endif - - class QDockWidget; namespace search { class Result; } namespace qt { -#ifndef USE_DRAPE class DrawWidget; -#else - class DrapeSurface; -#endif // USE_DRAPE class MainWindow : public QMainWindow, location::LocationObserver { QAction * m_pMyPositionAction; QAction * m_pSearchAction; -#ifndef USE_DRAPE DrawWidget * m_pDrawWidget; -#else - DrapeSurface * m_pDrawWidget; -#endif // USE_DRAPE QDockWidget * m_Docks[1]; @@ -1,15 +1,11 @@ # Main application in qt. ROOT_DIR = .. -DEPENDENCIES = map render gui routing search storage indexer graphics platform anim geometry coding base \ +DEPENDENCIES = map drape_frontend routing search storage indexer drape platform geometry coding base \ freetype expat fribidi tomcrypt jansson protobuf osrm stats_client minizip succinct DEPENDENCIES += opening_hours \ -drape { - DEPENDENCIES *= drape_frontend drape -} - include($$ROOT_DIR/common.pri) TARGET = MAPS.ME @@ -110,17 +106,11 @@ SOURCES += \ preferences_dialog.cpp \ search_panel.cpp \ update_dialog.cpp \ - -CONFIG(drape){ - SOURCES += \ - drape_surface.cpp \ qtoglcontext.cpp \ qtoglcontextfactory.cpp \ -} HEADERS += \ mainwindow.hpp \ - widgets.hpp \ draw_widget.hpp \ proxystyle.hpp \ slider_ctrl.hpp \ @@ -129,12 +119,7 @@ HEADERS += \ preferences_dialog.hpp \ search_panel.hpp \ update_dialog.hpp \ - -CONFIG(drape){ - HEADERS += \ - drape_surface.hpp \ qtoglcontext.hpp \ qtoglcontextfactory.hpp \ -} RESOURCES += res/resources.qrc diff --git a/qt/qtoglcontextfactory.cpp b/qt/qtoglcontextfactory.cpp index 21f0224f2e..71b9da7a79 100644 --- a/qt/qtoglcontextfactory.cpp +++ b/qt/qtoglcontextfactory.cpp @@ -4,8 +4,8 @@ QtOGLContextFactory::QtOGLContextFactory(QWindow * surface) : m_surface(surface) - , m_drawContext(NULL) - , m_uploadContext(NULL) + , m_drawContext(nullptr) + , m_uploadContext(nullptr) {} QtOGLContextFactory::~QtOGLContextFactory() @@ -16,7 +16,7 @@ QtOGLContextFactory::~QtOGLContextFactory() dp::OGLContext * QtOGLContextFactory::getDrawContext() { - if (m_drawContext == NULL) + if (m_drawContext == nullptr) m_drawContext = new QtOGLContext(m_surface, m_uploadContext); return m_drawContext; @@ -24,7 +24,7 @@ dp::OGLContext * QtOGLContextFactory::getDrawContext() dp::OGLContext * QtOGLContextFactory::getResourcesUploadContext() { - if (m_uploadContext == NULL) + if (m_uploadContext == nullptr) m_uploadContext = new QtOGLContext(m_surface, m_drawContext); return m_uploadContext; diff --git a/qt_tstfrm/qt_tstfrm.pro b/qt_tstfrm/qt_tstfrm.pro index f55ba065ee..9525500b23 100644 --- a/qt_tstfrm/qt_tstfrm.pro +++ b/qt_tstfrm/qt_tstfrm.pro @@ -9,14 +9,9 @@ include($$ROOT_DIR/common.pri) QT *= core gui widgets opengl HEADERS += \ - tstwidgets.hpp \ - macros.hpp \ - gl_test_widget.hpp \ - gui_test_widget.hpp \ test_main_loop.hpp \ SOURCES += \ - tstwidgets.cpp \ test_main_loop.cpp \ diff --git a/render/events.hpp b/render/events.hpp index 81756179c0..41dc74939e 100644 --- a/render/events.hpp +++ b/render/events.hpp @@ -44,39 +44,3 @@ public: inline m2::PointD const & Pt() const { return m_Pt1; } inline double ScaleFactor() const { return m_factor; } }; - -#ifndef USE_DRAPE -class Drawer; - -class PaintEvent -{ - Drawer * m_drawer; - core::CommandsQueue::Environment const * m_env; - bool m_isCancelled; - bool m_isEmptyDrawing; - -public: - PaintEvent(Drawer * drawer, core::CommandsQueue::Environment const * env = 0); - - Drawer * drawer() const; - void cancel(); - bool isCancelled() const; - bool isEmptyDrawing() const; - void setIsEmptyDrawing(bool flag); -}; - -class PaintOverlayEvent -{ -public: - PaintOverlayEvent(Drawer * drawer, ScreenBase const & modelView) - : m_drawer(drawer), m_modelView(modelView) {} - - ScreenBase const & GetModelView() const { return m_modelView; } - Drawer * GetDrawer() const { return m_drawer; } - m2::RectD const & GetClipRect() const { return m_modelView.ClipRect(); } - -private: - Drawer * m_drawer; - ScreenBase m_modelView; -}; -#endif // USE_DRAPE diff --git a/tools/autobuild/android.sh b/tools/autobuild/android.sh index b5a61c2157..2da5bb690d 100755 --- a/tools/autobuild/android.sh +++ b/tools/autobuild/android.sh @@ -16,7 +16,7 @@ source "$MY_PATH/ndk_helper.sh" MKSPEC="$MY_PATH/../mkspecs/android-clang" QMAKE_PARAMS="CONFIG+=${CONFIGURATION}" -SHADOW_DIR_BASE="$MY_PATH/../../../omim-android" +SHADOW_DIR_BASE="$MY_PATH/../../../omim-android-drape" # Try to read ndk root path from android/local.properties file export NDK_ROOT=$(GetNdkRoot) || ( echo "Can't read NDK root path from android/local.properties"; exit 1 ) |