diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 162f6a4e5d..95e8ced2d3 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -667,6 +667,11 @@ T const * CastMark(UserMark const * data) * \/ */ +::Framework * frm() +{ + return g_framework->NativeFramework(); +} + extern "C" { // API @@ -738,7 +743,7 @@ extern "C" void CallOnUserMarkActivated(shared_ptr obj, UserMarkCopy * markCopy) { - ::Framework * fm = g_framework->NativeFramework(); + ::Framework * fm = frm(); UserMark const * mark = markCopy->GetUserMark(); fm->ActivateUserMark(mark); switch (mark->GetMarkType()) @@ -793,7 +798,7 @@ extern "C" { search::AddressInfo info; - g_framework->NativeFramework()->GetAddressInfoForGlobalPoint(MercatorBounds::FromLatLon(lat, lon), info); + frm()->GetAddressInfoForGlobalPoint(MercatorBounds::FromLatLon(lat, lon), info); return jni::ToJavaString(env, info.FormatNameAndAddress()); } @@ -801,7 +806,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz) { - g_framework->NativeFramework()->GetBookmarkManager().UserMarksClear(UserMarkContainer::API_MARK); + frm()->GetBookmarkManager().UserMarksClear(UserMarkContainer::API_MARK); } JNIEXPORT void JNICALL @@ -823,8 +828,9 @@ extern "C" JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_Framework_nativeGetGe0Url(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon, jdouble zoomLevel, jstring name) { - double const scale = (zoomLevel > 0 ? zoomLevel : g_framework->NativeFramework()->GetDrawScale()); - const string url = g_framework->NativeFramework()->CodeGe0url(lat, lon, scale, jni::ToNativeString(env, name)); + ::Framework * fr = frm(); + double const scale = (zoomLevel > 0 ? zoomLevel : fr->GetDrawScale()); + const string url = fr->CodeGe0url(lat, lon, scale, jni::ToNativeString(env, name)); return jni::ToJavaString(env, url); } @@ -834,7 +840,7 @@ extern "C" { string distance; double azimut = -1.0; - g_framework->NativeFramework()->GetDistanceAndAzimut(m2::PointD(merX, merY), cLat, cLon, north, distance, azimut); + frm()->GetDistanceAndAzimut(m2::PointD(merX, merY), cLat, cLon, north, distance, azimut); jclass daClazz = env->FindClass("com/mapswithme/maps/bookmarks/data/DistanceAndAzimut"); ASSERT ( daClazz, () ); @@ -904,13 +910,13 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_Framework_nativeIsDataVersionChanged(JNIEnv * env, jclass clazz) { - return g_framework->NativeFramework()->IsDataVersionUpdated() ? JNI_TRUE : JNI_FALSE; + return frm()->IsDataVersionUpdated() ? JNI_TRUE : JNI_FALSE; } JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeUpdateSavedDataVersion(JNIEnv * env, jclass clazz) { - g_framework->NativeFramework()->UpdateSavedDataVersion(); + frm()->UpdateSavedDataVersion(); } namespace @@ -951,7 +957,7 @@ extern "C" Java_com_mapswithme_maps_Framework_getGuideInfoForIndex(JNIEnv * env, jclass clazz, jobject index) { guides::GuideInfo info; - if (g_framework->NativeFramework()->GetGuideInfo(ToNative(index), info)) + if (frm()->GetGuideInfo(ToNative(index), info)) return GuideNative2Java(env).GetGuide(info); return NULL; @@ -960,20 +966,20 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_setWasAdvertised(JNIEnv * env, jclass clazz, jstring appId) { - g_framework->NativeFramework()->GetGuidesManager().SetWasAdvertised(jni::ToNativeString(env, appId)); + frm()->GetGuidesManager().SetWasAdvertised(jni::ToNativeString(env, appId)); } JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_Framework_wasAdvertised(JNIEnv * env, jclass clazz, jstring appId) { - return g_framework->NativeFramework()->GetGuidesManager().WasAdvertised(jni::ToNativeString(env, appId)); + return frm()->GetGuidesManager().WasAdvertised(jni::ToNativeString(env, appId)); } JNIEXPORT jobjectArray JNICALL Java_com_mapswithme_maps_Framework_getGuideIds(JNIEnv * env, jclass clazz) { std::set guides; - g_framework->NativeFramework()->GetGuidesManager().GetGuidesIds(guides); + frm()->GetGuidesManager().GetGuidesIds(guides); jclass klass = env->FindClass("java/lang/String"); ASSERT ( klass, () ); @@ -995,7 +1001,7 @@ extern "C" Java_com_mapswithme_maps_Framework_getGuideById(JNIEnv * env, jclass clazz, jstring guideId) { guides::GuideInfo info; - if (g_framework->NativeFramework()->GetGuidesManager().GetGuideInfoByAppId(jni::ToNativeString(env, guideId), info)) + if (frm()->GetGuidesManager().GetGuideInfoByAppId(jni::ToNativeString(env, guideId), info)) return GuideNative2Java(env).GetGuide(info); return NULL; @@ -1004,13 +1010,13 @@ extern "C" JNIEXPORT jint JNICALL Java_com_mapswithme_maps_Framework_getDrawScale(JNIEnv * env, jclass clazz) { - return static_cast(g_framework->NativeFramework()->GetDrawScale()); + return static_cast(frm()->GetDrawScale()); } JNIEXPORT jdoubleArray JNICALL Java_com_mapswithme_maps_Framework_getScreenRectCenter(JNIEnv * env, jclass clazz) { - const m2::PointD center = g_framework->NativeFramework()->GetViewportCenter(); + const m2::PointD center = frm()->GetViewportCenter(); double latlon[] = {MercatorBounds::YToLat(center.y), MercatorBounds::XToLon(center.x)}; jdoubleArray jLatLon = env->NewDoubleArray(2); @@ -1030,7 +1036,7 @@ extern "C" { const size_t nIndex = static_cast(index); - BookmarkManager & m = g_framework->NativeFramework()->GetBookmarkManager(); + BookmarkManager & m = frm()->GetBookmarkManager(); UserMarkContainer::Controller & c = m.UserMarksGetController(UserMarkContainer::SEARCH_MARK); ASSERT_LESS(nIndex , c.GetUserMarkCount(), ("Invalid index", nIndex)); UserMark const * mark = c.GetUserMark(nIndex); @@ -1054,7 +1060,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_cleanSearchLayerOnMap(JNIEnv * env, jclass clazz) { - g_framework->NativeFramework()->CancelInteractiveSearch(); + frm()->CancelInteractiveSearch(); } JNIEXPORT void JNICALL @@ -1113,42 +1119,42 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeLoadbookmarks(JNIEnv * env, jclass thiz) { - g_framework->NativeFramework()->LoadBookmarks(); + frm()->LoadBookmarks(); } JNIEXPORT jboolean JNICALL Java_com_mapswithme_maps_Framework_nativeIsRoutingActive(JNIEnv * env, jclass thiz) { - return g_framework->NativeFramework()->IsRoutingActive(); + return frm()->IsRoutingActive(); } JNIEXPORT void JNICALL - Java_com_mapswithme_maps_Framework_nativeCancelRoutingSession(JNIEnv * env, jclass thiz) + Java_com_mapswithme_maps_Framework_nativeCloseRouting(JNIEnv * env, jclass thiz) { - return g_framework->NativeFramework()->CancelRoutingSession(); + frm()->CloseRouting(); } JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeBuildRoute(JNIEnv * env, jclass thiz, jdouble lat, jdouble lon) { - g_framework->NativeFramework()->BuildRoute(MercatorBounds::FromLatLon(lat, lon)); + frm()->BuildRoute(MercatorBounds::FromLatLon(lat, lon)); } JNIEXPORT void JNICALL - Java_com_mapswithme_maps_Framework_nativeStartRoutingSession(JNIEnv * env, jclass thiz) + Java_com_mapswithme_maps_Framework_nativeFollowRoute(JNIEnv * env, jclass thiz) { - return g_framework->NativeFramework()->StartRoutingSession(); + frm()->FollowRoute(); } JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jclass thiz) { - ::Framework * frm = g_framework->NativeFramework(); + ::Framework * fr = frm(); - if (frm->IsRoutingActive()) + if (fr->IsRoutingActive()) { location::FollowingInfo info; - frm->GetRouteFollowingInfo(info); + fr->GetRouteFollowingInfo(info); if (info.IsValid()) { @@ -1169,7 +1175,7 @@ extern "C" { search::AddressInfo info; - g_framework->NativeFramework()->GetAddressInfoForGlobalPoint(MercatorBounds::FromLatLon(lat, lon), info); + frm()->GetAddressInfoForGlobalPoint(MercatorBounds::FromLatLon(lat, lon), info); jclass klass = env->FindClass("com/mapswithme/maps/bookmarks/data/MapObject$Poi"); jmethodID methodID = env->GetMethodID(klass, "", "(Ljava/lang/String;DDLjava/lang/String;)V"); @@ -1183,7 +1189,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeActivateUserMark(JNIEnv * env, jclass clazz, jdouble lat, jdouble lon) { - ::Framework * fr = g_framework->NativeFramework(); + ::Framework * fr = frm(); m2::PointD pxPoint = fr->GtoP(MercatorBounds::FromLatLon(lat, lon)); UserMark const * mark = fr->GetUserMark(pxPoint, true); fr->GetBalloonManager().OnShowMark(mark); diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 29cc21f4a0..e1f71a270b 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -129,10 +129,10 @@ public class Framework //@{ public native static boolean nativeIsRoutingActive(); - public native static void nativeCancelRoutingSession(); + public native static void nativeCloseRouting(); public native static void nativeBuildRoute(double lat, double lon); - public native static void nativeStartRoutingSession(); + public native static void nativeFollowRoute(); public native static LocationState.RoutingInfo nativeGetRouteFollowingInfo(); //@} diff --git a/android/src/com/mapswithme/maps/MWMActivity.java b/android/src/com/mapswithme/maps/MWMActivity.java index 9cc27115f1..1171d5529e 100644 --- a/android/src/com/mapswithme/maps/MWMActivity.java +++ b/android/src/com/mapswithme/maps/MWMActivity.java @@ -1379,19 +1379,19 @@ public class MWMActivity extends NvEventQueueActivity buildRoute(); break; case R.id.iv__routing_close: - stopRouting(); + closeRouting(); break; case R.id.btn__routing_go: - startRouting(); + followRoute(); break; default: break; } } - private void startRouting() + private void followRoute() { - Framework.nativeStartRoutingSession(); + Framework.nativeFollowRoute(); } private void buildRoute() @@ -1421,13 +1421,13 @@ public class MWMActivity extends NvEventQueueActivity } } - private void stopRouting() + private void closeRouting() { mInfoView.bringToFront(); mRlRoutingBox.setVisibility(View.GONE); mRlRoutingBox.clearAnimation(); - Framework.nativeCancelRoutingSession(); + Framework.nativeCloseRouting(); } @Override diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 180261d720..a5265a6612 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -754,7 +754,7 @@ - (void)routeViewDidCancelRouting:(RouteView *)routeView { - GetFramework().CancelRoutingSession(); + GetFramework().CloseRouting(); [routeView setVisible:NO animated:YES]; } diff --git a/map/framework.cpp b/map/framework.cpp index 6ce183321b..436355d975 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -932,7 +932,6 @@ void Framework::DoDrag(DragEvent const & e) #endif m_navigator.DoDrag(pt, ElapsedSeconds()); - m_informationDisplay.locationState()->Draged(); if (m_renderPolicy) m_renderPolicy->DoDrag(); @@ -1001,7 +1000,7 @@ void Framework::Move(double azDir, double factor) void Framework::ScaleToPoint(ScaleToPointEvent const & e) { m2::PointD pt = m_navigator.ShiftPoint(e.Pt()); - GetLocationState()->ScaleCorrection(pt); + GetLocationState()->CorrectScalePoint(pt); m_animController->AddTask(m_navigator.ScaleToPointAnim(pt, e.ScaleFactor(), 0.25)); @@ -1017,7 +1016,7 @@ void Framework::ScaleDefault(bool enlarge) void Framework::Scale(double scale) { m2::PointD center = GetPixelCenter(); - GetLocationState()->ScaleCorrection(center); + GetLocationState()->CorrectScalePoint(center); m_animController->AddTask(m_navigator.ScaleToPointAnim(center, scale, 0.25)); Invalidate(); @@ -1029,7 +1028,7 @@ 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()->ScaleCorrection(pt1, pt2); + m_informationDisplay.locationState()->CorrectScalePoint(pt1, pt2); #ifdef DRAW_TOUCH_POINTS m_informationDisplay.setDebugPoint(0, pt1); @@ -1847,34 +1846,25 @@ bool Framework::IsRoutingActive() const return m_routingSession.IsActive(); } -bool Framework::BuildRoute(m2::PointD const & destination) +void Framework::BuildRoute(m2::PointD const & destination) { shared_ptr const & state = GetLocationState(); if (!GetPlatform().HasRouting() || !state->IsModeHasPosition()) - return false; + /// show dialog about Buy Pro, or about "Has no locations" + return; if (IsRoutingActive()) - CancelRoutingSession(); + CloseRouting(); m_routingSession.BuildRoute(state->Position(), destination, [&] (Route const & route) { InsertRoute(route); state->RouteBuilded(); - - m2::PolylineD const & poly = route.GetPoly(); - - m2::AnyRectD srcRect = GetNavigator().Screen().GlobalRect(); - m2::RectD rect = srcRect.GetGlobalRect(); - for (auto it = poly.Begin(); it != poly.End(); ++it) - rect.Add(*it); - - ShowRectExVisibleScale(rect); + ShowRectExVisibleScale(route.GetPoly().GetLimitRect()); }); - - return true; } -void Framework::StartRoutingSession() +void Framework::FollowRoute() { GetLocationState()->StartRouteFollow(); } @@ -1890,7 +1880,7 @@ BookmarkCategory * Framework::FindCategory(string const & name) return 0; } -void Framework::CancelRoutingSession() +void Framework::CloseRouting() { ASSERT(IsRoutingActive(), ()); GetLocationState()->StopRoutingMode(); diff --git a/map/framework.hpp b/map/framework.hpp index 21ad3ee0d2..97295b74cc 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -483,9 +483,9 @@ public: /// @name Routing mode //@{ bool IsRoutingActive() const; - bool BuildRoute(m2::PointD const & destination); - void StartRoutingSession(); - void CancelRoutingSession(); + void BuildRoute(m2::PointD const & destination); + void FollowRoute(); + void CloseRouting(); void GetRouteFollowingInfo(location::FollowingInfo & info) const; private: diff --git a/map/location_state.cpp b/map/location_state.cpp index 8dd978d63d..0e714d4aeb 100644 --- a/map/location_state.cpp +++ b/map/location_state.cpp @@ -115,12 +115,6 @@ public: m_pxBindingAnim->IsRunning(); } - void SetPxBinding(m2::PointD const & pt) - { - m_pxBindingAnim->Reset(pt, pt, 0.1); - UpdateViewport(); - } - private: void UpdateViewport() { @@ -133,8 +127,7 @@ private: double currentAngle = m_angleAnim->GetCurrentValue(); //@{ pixel coord system - m2::RectD const pixelRect = m_fw->GetNavigator().Screen().PixelRect(); - m2::PointD const pxCenter = pixelRect.Center(); + m2::PointD const pxCenter = GetPixelRect().Center(); m2::PointD vectorToCenter = pxCenter - pxBinding; if (!vectorToCenter.IsAlmostZero()) vectorToCenter = vectorToCenter.Normalize(); @@ -178,8 +171,12 @@ private: private: m2::PointD InvertPxBinding(m2::PointD const & px) const { - m2::RectD const & pixelRect = m_fw->GetNavigator().Screen().PixelRect(); - return m2::PointD(px.x, pixelRect.maxY() - px.y); + return m2::PointD(px.x, GetPixelRect().maxY() - px.y); + } + + m2::RectD const & GetPixelRect() const + { + return m_fw->GetNavigator().Screen().PixelRect(); } private: @@ -253,7 +250,7 @@ void State::SwitchToNextMode() m_afterPendingMode = Follow; break; case NotFollow: - newMode = Follow; + newMode = Follow; break; case Follow: if (IsRotationActive()) @@ -281,9 +278,15 @@ void State::SwitchToNextMode() void State::RouteBuilded() { ASSERT(GetPlatform().HasRouting(), ()); - ASSERT(IsModeHasPosition(), ()); StopAllAnimations(); - SetModeInfo(ChangeMode(IncludeModeBit(m_modeInfo, RoutingSessionBit), NotFollow)); + SetModeInfo(IncludeModeBit(m_modeInfo, RoutingSessionBit)); + if (GetMode() > NotFollow) + SetModeInfo(ChangeMode(m_modeInfo, NotFollow)); + else if (GetMode() == UnknownPosition) + { + m_afterPendingMode = NotFollow; + SetModeInfo(ChangeMode(m_modeInfo, PendingPosition)); + } } void State::StartRouteFollow() @@ -445,7 +448,7 @@ void State::draw(graphics::OverlayRenderer * r, // if we know look direction than we draw arrow if (IsDirectionKnown()) { - double rotateAngle = m_drawDirection + m_framework->GetNavigator().Screen().GetAngle(); + double rotateAngle = m_drawDirection + GetModelView().GetAngle(); math::Matrix compassDrawM = math::Shift( math::Rotate( @@ -590,7 +593,7 @@ void State::CreateAnimTask(const m2::PointD & srcPx, const m2::PointD & dstPx) { EndAnimation(); m_animTask.reset(new RotateAndFollowAnim(m_framework, Position(), - m_framework->GetNavigator().Screen().GetAngle(), + GetModelView().GetAngle(), srcPx, dstPx)); m_framework->GetAnimController()->AddTask(m_animTask); } @@ -620,14 +623,20 @@ void State::SetModeInfo(uint16_t modeInfo) void State::StopAllAnimations() { EndAnimation(); - m_framework->GetAnimator().StopRotation(); - m_framework->GetAnimator().StopChangeViewport(); - m_framework->GetAnimator().StopMoveScreen(); + Animator & animator = m_framework->GetAnimator(); + animator.StopRotation(); + animator.StopChangeViewport(); + animator.StopMoveScreen(); +} + +ScreenBase const & State::GetModelView() const +{ + return m_framework->GetNavigator().Screen(); } m2::PointD const State::GetRaFModeDefaultPxBind() const { - m2::RectD const & pixelRect = m_framework->GetNavigator().Screen().PixelRect(); + m2::RectD const & pixelRect = GetModelView().PixelRect(); return m2::PointD(pixelRect.Center().x, pixelRect.maxY() - POSITION_Y_OFFSET * visualScale()); } @@ -658,12 +667,10 @@ void State::DragStarted() StopLocationFollow(); } -void State::Draged(){} - void State::DragEnded() { // reset GPS centering mode if we have dragged far from current location - ScreenBase const & s = m_framework->GetNavigator().Screen(); + ScreenBase const & s = GetModelView(); m2::PointD const defaultPxBinding = GetModeDefaultPixelBinding(ExcludeAllBits(m_dragModeInfo)); m2::PointD const pxPosition = s.GtoP(Position()); @@ -681,18 +688,17 @@ void State::ScaleStarted() m_scaleModeInfo = m_modeInfo; } -void State::ScaleCorrection(m2::PointD & pt) +void State::CorrectScalePoint(m2::PointD & pt) const { if (IsModeChangeViewport() || ExcludeAllBits(m_scaleModeInfo) > NotFollow) pt = m_framework->GtoP(Position()); } -void State::ScaleCorrection(m2::PointD & pt1, m2::PointD & pt2) +void State::CorrectScalePoint(m2::PointD & pt1, m2::PointD & pt2) const { if (IsModeChangeViewport() || ExcludeAllBits(m_scaleModeInfo) > NotFollow) { - m2::PointD const ptC = (pt1 + pt2) / 2; - m2::PointD const ptDiff = m_framework->GtoP(Position()) - ptC; + m2::PointD const ptDiff = m_framework->GtoP(Position()) - (pt1 + pt2) / 2; pt1 += ptDiff; pt2 += ptDiff; } @@ -716,8 +722,7 @@ void State::OnSize(m2::RectD const & /*oldPixelRect*/) if (GetMode() == RotateAndFollow) { EndAnimation(); - m2::PointD pxBind = GetModeDefaultPixelBinding(GetMode()); - CreateAnimTask(m_framework->GtoP(Position()), pxBind); + CreateAnimTask(m_framework->GtoP(Position()), GetModeDefaultPixelBinding(GetMode())); } } @@ -781,7 +786,7 @@ void State::AnimateStateTransition(Mode oldMode, Mode newMode) } else if (oldMode == RotateAndFollow && newMode == UnknownPosition) { - m_framework->GetAnimator().RotateScreen(m_framework->GetNavigator().Screen().GetAngle(), 0.0); + m_framework->GetAnimator().RotateScreen(GetModelView().GetAngle(), 0.0); } AnimateFollow(); diff --git a/map/location_state.hpp b/map/location_state.hpp index f42f988fbb..772a85fd47 100644 --- a/map/location_state.hpp +++ b/map/location_state.hpp @@ -11,6 +11,7 @@ class Framework; +class ScreenBase; namespace graphics { class DisplayList; } namespace anim { class Task;} @@ -78,12 +79,11 @@ namespace location /// @name User input notification block //@{ void DragStarted(); - void Draged(); void DragEnded(); void ScaleStarted(); - void ScaleCorrection(m2::PointD & pt); - void ScaleCorrection(m2::PointD & pt1, m2::PointD & pt2); + void CorrectScalePoint(m2::PointD & pt) const; + void CorrectScalePoint(m2::PointD & pt1, m2::PointD & pt2) const; void ScaleEnded(); void Rotated(); @@ -133,6 +133,8 @@ namespace location void StopAllAnimations(); + ScreenBase const & GetModelView() const; + private: // Mode bits // { diff --git a/map/navigator.cpp b/map/navigator.cpp index 868bd43c13..cb3b1fbad8 100644 --- a/map/navigator.cpp +++ b/map/navigator.cpp @@ -451,10 +451,11 @@ namespace { m_finger1Start = target + (startPt - target); m_prevPt1 = m_finger1Start; - m_finger1End = m_finger1Start + (endPt - startPt); + m_deltaFinger1 = (endPt - startPt); + m_finger2Start = target - (startPt - target); m_prevPt2 = m_finger2Start; - m_finger2End = m_finger2Start - (endPt - startPt); + m_deltaFinger2 = -(endPt - startPt); } virtual bool IsVisual() const { return true; } @@ -473,15 +474,13 @@ namespace double t = elapsed / m_deltaTime; if (t > 1.0 || my::AlmostEqual(t, 1.0)) { - m_fn(m_finger1End, m_finger2End, m_prevPt1, m_prevPt2); + m_fn(m_finger1Start + m_deltaFinger1, m_finger2Start + m_deltaFinger2, m_prevPt1, m_prevPt2); End(); return; } - m2::PointD delta1 = ((m_finger1End - m_finger1Start) * t); - m2::PointD delta2 = ((m_finger2End - m_finger2Start) * t); - m2::PointD current1 = m_finger1Start + delta1; - m2::PointD current2 = m_finger2Start + delta2; + m2::PointD const current1 = m_finger1Start + m_deltaFinger1 * t; + m2::PointD const current2 = m_finger2Start + m_deltaFinger2 * t; m_fn(current1, current2, m_prevPt1, m_prevPt2); m_prevPt1 = current1; m_prevPt2 = current2; @@ -492,9 +491,9 @@ namespace m2::PointD m_prevPt2; m2::PointD m_finger1Start; - m2::PointD m_finger1End; + m2::PointD m_deltaFinger1; m2::PointD m_finger2Start; - m2::PointD m_finger2End; + m2::PointD m_deltaFinger2; TScaleImplFn m_fn; double m_startTime; diff --git a/map/routing_session.cpp b/map/routing_session.cpp index d0ccb572b4..72564a4f7e 100644 --- a/map/routing_session.cpp +++ b/map/routing_session.cpp @@ -3,6 +3,8 @@ #include "../indexer/mercator.hpp" +#include "../platform/platform.hpp" + using namespace location; diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 9e82de20a8..ce96f6fa34 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -397,9 +397,9 @@ namespace qt { static int counter = 0; if (counter % 2 == 0) - m_framework->StartRoutingSession(); + m_framework->FollowRoute(); else - m_framework->CancelRoutingSession(); + m_framework->CloseRouting(); counter++; }