From 7508e58bcd6f2cc4988940013972afe029a8a831 Mon Sep 17 00:00:00 2001 From: ExMix Date: Mon, 22 Jun 2015 21:43:18 +0300 Subject: [PATCH] rebase fixes --- android/assets/resources-default | 1 + android/jni/Android.mk | 2 +- android/jni/Application.mk | 3 +- android/jni/com/mapswithme/maps/Framework.cpp | 5 +- ...{RenderActivity.cpp => RenderFragment.cpp} | 8 +- .../src/com/mapswithme/maps/MapFragment.java | 23 +- .../src/com/mapswithme/maps/MwmActivity.java | 14 - ...enderActivity.java => RenderFragment.java} | 16 +- data/resources-6plus_dark/basic.skn | 917 ----------------- data/resources-hdpi/symbols.sdf | 348 +++---- data/resources-hdpi_dark/basic.skn | 917 ----------------- data/resources-ldpi/symbols.sdf | 2 +- data/resources-ldpi_dark/basic.skn | 917 ----------------- data/resources-mdpi_dark/basic.skn | 926 ------------------ data/resources-xhdpi_dark/basic.skn | 926 ------------------ data/resources-xxhdpi_dark/basic.skn | 926 ------------------ data/resources-xxhdpi_dark/symbols.sdf | 451 +++------ data/resources-yota/basic.skn | 524 ---------- .../clear/style-clear/6plus/route-arrow.png | Bin 1694 -> 6267 bytes .../clear/style-clear/hdpi/route-arrow.png | Bin 918 -> 2389 bytes .../clear/style-clear/ldpi/route-arrow.png | Bin 497 -> 1323 bytes .../clear/style-clear/mdpi/route-arrow.png | Bin 898 -> 2276 bytes .../clear/style-clear/xhdpi/route-arrow.png | Bin 1575 -> 4890 bytes .../clear/style-clear/xxhdpi/route-arrow.png | Bin 1728 -> 5701 bytes .../legacy/style-dark/6plus/route-arrow.png | Bin 1694 -> 6267 bytes .../legacy/style-dark/hdpi/route-arrow.png | Bin 918 -> 2389 bytes .../legacy/style-dark/ldpi/route-arrow.png | Bin 497 -> 1323 bytes .../legacy/style-dark/mdpi/route-arrow.png | Bin 898 -> 2276 bytes .../legacy/style-dark/xhdpi/route-arrow.png | Bin 1575 -> 4890 bytes .../legacy/style-dark/xxhdpi/route-arrow.png | Bin 1728 -> 5701 bytes drape/color.cpp | 21 + drape/color.hpp | 5 + drape/shaders/line_fragment_shader.fsh | 6 +- drape/shaders/texturing_fragment_shader.fsh | 3 + .../anyrect_interpolation_tests.cpp | 10 +- .../drape_frontend_tests/skin_tests.cpp | 24 +- drape_frontend/frontend_renderer.cpp | 12 +- drape_frontend/frontend_renderer.hpp | 1 + drape_frontend/render_group.cpp | 2 +- .../ZoomButtons/MWMZoomButtons.mm | 7 +- iphone/Maps/Classes/EAGLView.h | 1 - iphone/Maps/Classes/EAGLView.mm | 5 - iphone/Maps/Classes/MapViewController.mm | 38 +- iphone/Maps/Classes/MapsAppDelegate.mm | 2 +- map/framework.cpp | 2 +- map/storage_bridge.hpp | 2 +- qt/draw_widget.cpp | 2 +- tools/android/update_assets_for_version.sh | 2 +- tools/unix/generate_symbols.sh | 8 +- 49 files changed, 443 insertions(+), 6636 deletions(-) create mode 120000 android/assets/resources-default rename android/jni/com/mapswithme/maps/{RenderActivity.cpp => RenderFragment.cpp} (80%) rename android/src/com/mapswithme/maps/{RenderActivity.java => RenderFragment.java} (89%) delete mode 100644 data/resources-6plus_dark/basic.skn delete mode 100644 data/resources-hdpi_dark/basic.skn delete mode 100644 data/resources-ldpi_dark/basic.skn delete mode 100644 data/resources-mdpi_dark/basic.skn delete mode 100644 data/resources-xhdpi_dark/basic.skn delete mode 100644 data/resources-xxhdpi_dark/basic.skn delete mode 100644 data/resources-yota/basic.skn diff --git a/android/assets/resources-default b/android/assets/resources-default new file mode 120000 index 0000000000..1b95aa04a1 --- /dev/null +++ b/android/assets/resources-default @@ -0,0 +1 @@ +../../data/resources-default \ No newline at end of file diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 905ddc851e..6f0487f59f 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -81,7 +81,7 @@ LOCAL_SRC_FILES := \ com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp \ com/mapswithme/maps/sound/tts.cpp \ com/mapswithme/maps/MapFragment.cpp \ - com/mapswithme/maps/RenderActivity.cpp \ + com/mapswithme/maps/RenderFragment.cpp \ com/mapswithme/maps/MWMApplication.cpp \ com/mapswithme/maps/LocationState.cpp \ com/mapswithme/maps/MapStorage.cpp \ diff --git a/android/jni/Application.mk b/android/jni/Application.mk index 6a02286c25..e7de93f3c8 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -15,7 +15,8 @@ endif LOCAL_PATH := $(call my-dir) APP_CFLAGS += -I$(LOCAL_PATH)/../../3party/boost \ - -I$(LOCAL_PATH)/../../3party/protobuf/src + -I$(LOCAL_PATH)/../../3party/protobuf/src \ + -I$(LOCAL_PATH)/../../3party/glm APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 1c4ab42f64..a9a535a7be 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -9,7 +9,6 @@ #include "../platform/Platform.hpp" -#include "map/information_display.hpp" #include "map/user_mark.hpp" #include "drape_frontend/visual_params.hpp" @@ -47,7 +46,7 @@ namespace return g_framework->NativeFramework(); } -} +} // namespace namespace android { @@ -198,7 +197,7 @@ void Framework::Resize(int w, int h) void Framework::SetMapStyle(MapStyle mapStyle) { - //@TODO UVR + m_work.SetMapStyle(mapStyle); } Storage & Framework::Storage() diff --git a/android/jni/com/mapswithme/maps/RenderActivity.cpp b/android/jni/com/mapswithme/maps/RenderFragment.cpp similarity index 80% rename from android/jni/com/mapswithme/maps/RenderActivity.cpp rename to android/jni/com/mapswithme/maps/RenderFragment.cpp index 7c2738e17c..6f4c49fa1d 100644 --- a/android/jni/com/mapswithme/maps/RenderActivity.cpp +++ b/android/jni/com/mapswithme/maps/RenderFragment.cpp @@ -6,25 +6,25 @@ extern "C" { JNIEXPORT jboolean JNICALL -Java_com_mapswithme_maps_RenderActivity_CreateEngine(JNIEnv * env, jobject thiz, jobject surface, jint destiny) +Java_com_mapswithme_maps_RenderFragment_CreateEngine(JNIEnv * env, jobject thiz, jobject surface, jint destiny) { return static_cast(g_framework->CreateDrapeEngine(env, surface, static_cast(destiny))); } JNIEXPORT void JNICALL -Java_com_mapswithme_maps_RenderActivity_SurfaceResized(JNIEnv * env, jobject thiz, jint w, jint h) +Java_com_mapswithme_maps_RenderFragment_SurfaceResized(JNIEnv * env, jobject thiz, jint w, jint h) { g_framework->Resize(static_cast(w), static_cast(h)); } JNIEXPORT void JNICALL -Java_com_mapswithme_maps_RenderActivity_DestroyEngine(JNIEnv * env, jobject thiz) +Java_com_mapswithme_maps_RenderFragment_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, +Java_com_mapswithme_maps_RenderFragment_OnTouch(JNIEnv * env, jobject thiz, jint action, jboolean hasFirst, jboolean hasSecond, jfloat x1, jfloat y1, jfloat x2, jfloat y2) { int mask = 0; diff --git a/android/src/com/mapswithme/maps/MapFragment.java b/android/src/com/mapswithme/maps/MapFragment.java index 10492cfb19..b8696ae59a 100644 --- a/android/src/com/mapswithme/maps/MapFragment.java +++ b/android/src/com/mapswithme/maps/MapFragment.java @@ -10,9 +10,8 @@ import android.view.View; import android.view.ViewGroup; import com.mapswithme.maps.downloader.DownloadHelper; import com.mapswithme.util.UiUtils; -import com.nvidia.devtech.NvEventQueueFragment; -public class MapFragment extends NvEventQueueFragment +public class MapFragment extends RenderFragment { public interface MapRenderingListener { @@ -59,21 +58,21 @@ public class MapFragment extends NvEventQueueFragment @Override protected void applyWidgetPivots() { - Framework.setWidgetPivot(Framework.MAP_WIDGET_RULER, - mSurfaceWidth - UiUtils.dimen(R.dimen.margin_ruler_right), - mSurfaceHeight - UiUtils.dimen(R.dimen.margin_ruler_bottom)); - Framework.setWidgetPivot(Framework.MAP_WIDGET_COPYRIGHT, - mSurfaceWidth - UiUtils.dimen(R.dimen.margin_ruler_right), - mSurfaceHeight - UiUtils.dimen(R.dimen.margin_ruler_bottom)); + //Framework.setWidgetPivot(Framework.MAP_WIDGET_RULER, + // mSurfaceWidth - UiUtils.dimen(R.dimen.margin_ruler_right), + // mSurfaceHeight - UiUtils.dimen(R.dimen.margin_ruler_bottom)); + //Framework.setWidgetPivot(Framework.MAP_WIDGET_COPYRIGHT, + // mSurfaceWidth - UiUtils.dimen(R.dimen.margin_ruler_right), + // mSurfaceHeight - UiUtils.dimen(R.dimen.margin_ruler_bottom)); - adjustCompass(0); + //adjustCompass(0); } public void adjustCompass(int offset) { - Framework.setWidgetPivot(Framework.MAP_WIDGET_COMPASS, - UiUtils.dimen(R.dimen.margin_compass_left) + offset, - mSurfaceHeight - UiUtils.dimen(R.dimen.margin_compass_bottom)); + //Framework.setWidgetPivot(Framework.MAP_WIDGET_COMPASS, + // UiUtils.dimen(R.dimen.margin_compass_left) + offset, + // mSurfaceHeight - UiUtils.dimen(R.dimen.margin_compass_bottom)); } @Override diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index dead2babe8..b444fcdfee 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -333,20 +333,6 @@ 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); - - mSurfaceView = (SurfaceView)findViewById(R.id.map_surfaceview); - mSurfaceView.setOnTouchListener(this); - mSurfaceView.getHolder().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/RenderFragment.java similarity index 89% rename from android/src/com/mapswithme/maps/RenderActivity.java rename to android/src/com/mapswithme/maps/RenderFragment.java index 8bd3a97495..9c78c56b68 100644 --- a/android/src/com/mapswithme/maps/RenderActivity.java +++ b/android/src/com/mapswithme/maps/RenderFragment.java @@ -1,16 +1,18 @@ package com.mapswithme.maps; import android.os.Bundle; +import android.support.annotation.Nullable; import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.Surface; import android.view.SurfaceHolder; +import android.view.SurfaceView; import android.view.View; -import com.mapswithme.maps.base.MWMFragmentActivity; +import com.mapswithme.maps.base.BaseMwmFragment; -public abstract class RenderActivity extends MWMFragmentActivity +public abstract class RenderFragment extends BaseMwmFragment implements View.OnTouchListener, SurfaceHolder.Callback { @@ -56,19 +58,19 @@ public abstract class RenderActivity extends MWMFragmentActivity { super.onCreate(b); final DisplayMetrics metrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(metrics); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); m_displayDensity = metrics.densityDpi; } @Override - protected void onResume() + public void onResume() { super.onResume(); InitEngine(); } @Override - protected void onStop() + public void onStop() { DestroyEngine(); super.onStop(); @@ -80,7 +82,7 @@ public abstract class RenderActivity extends MWMFragmentActivity final int count = event.getPointerCount(); if (count == 0) - return super.onTouchEvent(event); + return false; int action = event.getActionMasked(); switch (action) @@ -128,6 +130,8 @@ public abstract class RenderActivity extends MWMFragmentActivity } } + protected abstract void applyWidgetPivots(final int mapHeight, final int mapWidth); + private void InitEngine() { if (mSurfaceHolder != null) diff --git a/data/resources-6plus_dark/basic.skn b/data/resources-6plus_dark/basic.skn deleted file mode 100644 index 0b01dcb528..0000000000 --- a/data/resources-6plus_dark/basic.skn +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-hdpi/symbols.sdf b/data/resources-hdpi/symbols.sdf index c91b5d90e0..5b2c2ec2ea 100644 --- a/data/resources-hdpi/symbols.sdf +++ b/data/resources-hdpi/symbols.sdf @@ -1,179 +1,179 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/resources-hdpi_dark/basic.skn b/data/resources-hdpi_dark/basic.skn deleted file mode 100644 index 829c58b5fa..0000000000 --- a/data/resources-hdpi_dark/basic.skn +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-ldpi/symbols.sdf b/data/resources-ldpi/symbols.sdf index 62fc4b4217..b5babad62a 100644 --- a/data/resources-ldpi/symbols.sdf +++ b/data/resources-ldpi/symbols.sdf @@ -1,6 +1,6 @@ - + diff --git a/data/resources-ldpi_dark/basic.skn b/data/resources-ldpi_dark/basic.skn deleted file mode 100644 index 308f9b0d7c..0000000000 --- a/data/resources-ldpi_dark/basic.skn +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-mdpi_dark/basic.skn b/data/resources-mdpi_dark/basic.skn deleted file mode 100644 index f1561acea2..0000000000 --- a/data/resources-mdpi_dark/basic.skn +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-xhdpi_dark/basic.skn b/data/resources-xhdpi_dark/basic.skn deleted file mode 100644 index 2944b14130..0000000000 --- a/data/resources-xhdpi_dark/basic.skn +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-xxhdpi_dark/basic.skn b/data/resources-xxhdpi_dark/basic.skn deleted file mode 100644 index 6604fd230f..0000000000 --- a/data/resources-xxhdpi_dark/basic.skn +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources-xxhdpi_dark/symbols.sdf b/data/resources-xxhdpi_dark/symbols.sdf index acf00a3ef0..2f0406b362 100644 --- a/data/resources-xxhdpi_dark/symbols.sdf +++ b/data/resources-xxhdpi_dark/symbols.sdf @@ -1,6 +1,6 @@ - + @@ -18,295 +18,164 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/resources-yota/basic.skn b/data/resources-yota/basic.skn deleted file mode 100644 index 6ca078fdc3..0000000000 --- a/data/resources-yota/basic.skn +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/styles/clear/style-clear/6plus/route-arrow.png b/data/styles/clear/style-clear/6plus/route-arrow.png index 59e4a8e7bdb5685ecc834845916952f0e44be451..e073e8f9f6187110fc98240cc6994fb073f0fb49 100644 GIT binary patch literal 6267 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 UJmK{K|0V!b6doZfOV literal 1694 zcmX|B3s4hR6pdqQK?eb;)-RD#idfO9R{Z4y$S;7Pf=UMj3;BpiKu`z}v&9q$N;biS zk5+NTinIz51%iqurCM=}7!6jTh)9%D5KO>8Hk$z7&{6(Kiow!f%udU&zm-VyX3MEsWrnyefsfQHHF*`+f!V34=?B`^2lA`s zN{#l_z=X*R1cY*A7n<4&sucSn1Z)qe#VpqM`j5rcx9aXb*_(S-u6oK8UXIGF95EQR zJ?|KWHO!(K;e}gQ?>+&W2fi?$Uv_|Rf9UA$s2JQ=!HtgipWQ71?>kHj``4@XZ}_Zq zQkih-uujJ5O8hO2O?@IYms$O%2(##XwU2; zzSQMKV@d_5?=eyoZ_k;23Gjd}Wc|&XRuWm(1RlJ{|P7U=9?~y<6`ed?wuX`r_K}DQmU^jlOabqBU zOy*gPEDo?fchGrwS$xvKmBF zv^_WN@BxwMD?n4hP{~RN@ToVg3UZ-%{0{-1PS4_`F9n~jh%mT)QH;0;Sd9+4!S;|c z5G`};(bnJ+V0~x5dV9LkYTIo_*-C^$5}-q__x0EEmZxn?-PNqPy9+@35?gI|+^_zf zsnYQmg&4xZ@jQ(pJQ6VHM71t~=6T*!Z)|d^TnY_%<_!DYyLJqpPPu3Jn$YIUT>|8- z^RpH>Bx(ziGVmn?p}yG+&nMb;1e@xj|7w9l4C5&k>63*LVo6ZL1|1jf7^P~YNuqNM z^ZBtgU7I$#va_@2?IJDH&v3a|81*v!DRp7 zq7igGR@qPq%{Q*SQ>;??ScaSP(@hK^Qbx8us!i9d7bXQ_WGCZ`4}(*|5d_GQm!k0F zqtu~$(cwvNp^>UEYJfcJiM9ZB73iY4;fgi8z zZ9}Ie&tsArvaN?qAsN{3y*X}B;ZV=5#|!1TUeJkJ<>40No6jTqFd{#=b;8ejgH$P1 z-s;Wph9YmfGS@ESY zBCPLO7-o=l3X$_Y?0m{P+meNlX+oHn=P&j6Y0Ye;2aru(7s#57}RCv`mtGJMh zR@fJLS~&`c^w+?Cd$Mt!_U)!y7RBKy|Gf?f0x^S|R)|Pv-tn%HkV?l$ajW@t5#fX$ zrfSr~i;t2Lw(>_@8$;E#65m|*I)~rI(;Y*Wh2yJsA*th9F8JBtsKHS|^1uUve*qfs BYUls} diff --git a/data/styles/clear/style-clear/hdpi/route-arrow.png b/data/styles/clear/style-clear/hdpi/route-arrow.png index 1961f84d942845c8bd1e716d736b2d5c8ed67922..c54422803b6bedc1fa18c099d2cee49edb0376b2 100644 GIT binary patch literal 2389 zcmV-b399yqP)q3TnG83F#yw5vehqD!~TTkSGcTO$9<7ehi98 z40M}1DYVl5C^lh0x5lO1IPWJG%f4>^g4r(fDDr{!2W zzUb=t){sRT^uPU+v~I7$Lr&tlq6&fjK=7NnIhO9(isd`$-d+ZTjQ7qXCnQ7dwvGE< z1b~ej>lhG1qLJb7F`M1>w%ff4WgGX?K}cp(W_QXMr;Rl+K?AJsdXh66cY0@Dc`uOdud3?A^WsFD_e% zz+mX!kN_2Bc4wQMs$~~f{(=D^nah@yi*Rt~D(HGRdR39=3#7D{Fd$@7D4jnSr(9bw zW17X#OUf!;Yg5rn7!WdP%+AZj>HS+#^7x!lUIHnPrlOZHAY{^c^OeAcl7OzKjF&JVBynC+JQpqdVta|rZhkLeKuAK#pLyF$o*3;V5_i4i zdv+HCLNeG(cCW_T=SpLGiK?ll^b!VyJUB0T-WJnKf}v1XzG6NvVL-?O_mWflwqVAz zoY7vQo6k!a5c0s8Ju?@l_y0JymsFa^OBfJhJ};5OUZTnD?2=VKXFv$OWK_>PP!te> z?z~wK6*3@%Ug9$J5{n)R`E7RBIshoIX=FeMy~Myv8f=xW`lgyy58O)_5RxKZBG)Iw zOBfJhN-sII>jhJI2?Ih*$-?5t&|(5FVL*s!$v1(Q#0*$P_h_TTR*^HcyL9T-L(dgPYWR)l~VFZk>QJX5+)qn^t=sEJz0S2+TTG{ z?zyfP=>c@*<;}7JXir!L841AL(q&7_?5^toP5`nT0K-8dN!o0jrNwh&dr3H)5HC?i z!Xbo!t!%Zw?Cz zi6JBs5J{W@{m*UxHS!Vw2&k%RJy%yXAumy`wtj%Hl*c0%PPJsA#km0@ zN&bC+5ij{#u7Q{6y5CmmoRF7@GP`rdu#n%a94*exc;ulOJo+T1*!sr1`0GEejH)I= zhz766QSr>CTAZt^id)jlBNwb$vVh?rDao6=Ux?XXVykrd0mR*3q5!Z)3iFA0T0cf5oFAsOo>hjy(tsw9O%h?@m-zCND;AsNlW z;>U2xwFM8)njXC>r>{TQT4r}vFd!tO5dajU5tmW|icmD}B9f_G@ONOxz9z$=^3$hg zm!AIRw!bkTBqQ;h{0Q!5FDzM8qDqRmtZA@*-qSxo2O$~B%X{BNeapwA!XX5X`8OR5hwLD9TG-clD8_FCV~}gWK;cWIeZvR=0K=12-<^*)$C8EPd)DKT(Sx`MF`sXA-}a3@gD;~L zWrNRMU0+_)h^CrVaeua2P_h_#-*~bOQvPUUVJM{IH)k&3%Yh&so;4kLGp6z=5JQqZ z_2>nE2iEO5ioqd0dR0Kv)bF0JtNtSZw13z%uFvP>)nwcxd-7^`vk#t=#{C>O>FXNZTKo6A%xgjR_PLuvO4k&*;yL0*`G*E=o=URe#Ou?ydKAT+vZwKG#n$6 z4j}}jl<;{R4k46f06KXHh*^E(ht{Y{l3Hh4Xb_2o5<@V-?wDce&bk_Q0z z{L|JmzQa57A;d~RGy(Wbum_PuXh*U({7G8}mOBjlHv*cf7W>?edH~~+@iA|)BKgPiRl}_WmUS6b-p;dun8r66-jC70 zad>B;ltTlT8edPywrStQ)V@*i+U@aFqki*4+2Hkzzkh=PAt}u#Z5^npHGW=P)wBiY z-rC`xY~Nr&NJ=oKZ>U+;p3cPhMqCa;h$(#|JTx#F{Tr+xB#nGSRCqm(hD7@Y147K{ z8~zSd?MuFIFd!tAe4{}FNzQKSH`UV3+ z(# zK*%HqM8!v~pBmj(RgBC}b>8Dh={9o0D-su9G40PizL5^Ff{@9%(hAWorOdn4)773% z?P5U4WZZ@{cs-6HP191^Hy99-2r9gXcUF|wG~!%cRXT>BkhmR00tl)?v7SpK-!Ovx zAS5oNl$e&2edStb&$neL7~mcuB!VT|4!j2dYhFE)5$*jy39@)p{Gnf(00000NkvXX Hu0mjf+__!~ delta 907 zcmV;619be=5|#&$8Gi!+003{v%`X4|0MbxQR7C&)09AmhJY(pI`1)LZpU2bQ zJ!Or0m9ai%jiI#2#?s#6=R{$W`8*I<)vi>WL4bRic#kRWA>XE=Nb9-`shPg>?Z&K0!v9mK~#8N+|x-4 z!cY(f;TRPc5_pKX6dbP5o!Qy@Un#5j^KM{u-QZhP@lS0RMU3ox2?DWe3Ieh67zARb zQQ#1(PC+2HOCcZ{1rOnmVyar=AsPh@QRRUSX*CKP(tivZ1r2epdyRsI`2D3(&=7yH zM-jxEk48a5-0M-JfFb!PXh=Q^7D66H5cQr%S*@WE_9%j==U1Z;A?Q&A$-8M3HpIK% zD0?s@A7z6WWungBRucxIFbaD-G^j<=kdsAk3btv)Hk}}X7H#|fuOt}8Ui`w~-K@O9 zf_&MNJ%18%HP| zBE$_PZUVllx7z2&4JB+kK0FU_LrE_o6(GTJ^lIiH;JtD|5nwP$(~b3Bf{PhrGYqkOy=~VPCC9fPcomvDl|$GWK$9JC^9r@9v+63`8W4 zc_2p=Di3hT@ycV=mLDtT^g#dWu7n43`S2+`WF17~fn3lj5A@2kkWCP5iLE@y*9xWZ zfL-+H;fi?mrqknGz1^cQ2n0|NR`VZ%xrLg-ECdonu(0s{S4#PcDXoTgf+;>^+4Xpr zUVny?hckpcoFU{P4k_Sa3n33@2+tnQ5b{ul@arKAA&;~Aapt;#hb@FWlp*Bd3?UC` z2zZD?!sDs_5vJg1t_%SWYY2E)L%>5C5+3@H@bHIR!oxW5uns(|3lI6iL%#6Phjihg h4(T5WFmDf!KjK7YOhBWxYybcN07*qoLE}a1FH&<8Gi-<008Ix-?ab$00v@9M??Vs0RI60puMM)00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-yo5C;w{S@H3W000EINklF55=IrjpT ztf@V8atHvb-TtDE%c%6(Q|0ms0IF<}9eO;W{nFo7lyN00ea_eo-H0+vS$VMrBp~+* z=fVcTRmJUl8-D<5-u;|_lqy;xiMp3xKs=#C2ob7sdHYAdIJ~M}As{)T>m2UAmFPb5 z3X-}30CiO^?{!0#Y?aO~0#d5fR6LDuyBqPa%?bc^rt48ATgwSZ3A5$VjrgJWFrL}^ zSjsC9s^apR?iB)(M`TGt@c0|p|KiS+SAdLH8vF#LRDWrDtrp!!_AT-XGq|m?zKejA z&MQx0Xn|J@hA5K?_X+_iAdhGDim$E^uMiNEymDaPE22N+l^z08s(g^uE3hdp@5+GK z-)yIXxvc*n7)__-@eR2zg5H`X2^<9nrg9N0s&u~i*VlfL9r8K#HcMA0<&S55& z0DoglW0K?;JJYNZkP>9<_er#!nr{{-V6`}s@nnn~QiAjjj-a)7CI~Ayvc&M|xl6b>`WIDiNeW%W z7#p9&zSc9Ci6sDFLdfejB@#(B$8#4@<@R+#h<1YuXtex3pF)@4dk05wes1}lv4KdS zrEXV)A7eR|-!174s$+`V_p>aaWBo%`+Mr5L4y^EX4TE#M(=|Bn3&xl;oW&Q*&VLX9 z*s=c;{Q1pM!jMjt%PXd5kR+xt21hvHQ30$71_3eE7k{E67Ux=_ze^4=%@=aszMvUmf-f372XW(;Ildqu zYs?n}WQAFB*v&LwkVEplTP+gKes>igW_%Hf1U+`aB~yGsGbGR0tY!G}`>S(jbDfd& zf$1yvIWS#F=vybtB>k-u0MM8uIl_I-YB9#8zpUJu5WprFx=N)eacU3s3>*Vkbj-6D Z`5%QXJx0&pZan}1002ovPDHLkV1f^>XbAuS delta 482 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 delta 876 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 O7NDiBuU4UA8}UCwPA2>S literal 1575 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 UJmK{K|0V!b6doZfOV literal 1694 zcmX|B3s4hR6pdqQK?eb;)-RD#idfO9R{Z4y$S;7Pf=UMj3;BpiKu`z}v&9q$N;biS zk5+NTinIz51%iqurCM=}7!6jTh)9%D5KO>8Hk$z7&{6(Kiow!f%udU&zm-VyX3MEsWrnyefsfQHHF*`+f!V34=?B`^2lA`s zN{#l_z=X*R1cY*A7n<4&sucSn1Z)qe#VpqM`j5rcx9aXb*_(S-u6oK8UXIGF95EQR zJ?|KWHO!(K;e}gQ?>+&W2fi?$Uv_|Rf9UA$s2JQ=!HtgipWQ71?>kHj``4@XZ}_Zq zQkih-uujJ5O8hO2O?@IYms$O%2(##XwU2; zzSQMKV@d_5?=eyoZ_k;23Gjd}Wc|&XRuWm(1RlJ{|P7U=9?~y<6`ed?wuX`r_K}DQmU^jlOabqBU zOy*gPEDo?fchGrwS$xvKmBF zv^_WN@BxwMD?n4hP{~RN@ToVg3UZ-%{0{-1PS4_`F9n~jh%mT)QH;0;Sd9+4!S;|c z5G`};(bnJ+V0~x5dV9LkYTIo_*-C^$5}-q__x0EEmZxn?-PNqPy9+@35?gI|+^_zf zsnYQmg&4xZ@jQ(pJQ6VHM71t~=6T*!Z)|d^TnY_%<_!DYyLJqpPPu3Jn$YIUT>|8- z^RpH>Bx(ziGVmn?p}yG+&nMb;1e@xj|7w9l4C5&k>63*LVo6ZL1|1jf7^P~YNuqNM z^ZBtgU7I$#va_@2?IJDH&v3a|81*v!DRp7 zq7igGR@qPq%{Q*SQ>;??ScaSP(@hK^Qbx8us!i9d7bXQ_WGCZ`4}(*|5d_GQm!k0F zqtu~$(cwvNp^>UEYJfcJiM9ZB73iY4;fgi8z zZ9}Ie&tsArvaN?qAsN{3y*X}B;ZV=5#|!1TUeJkJ<>40No6jTqFd{#=b;8ejgH$P1 z-s;Wph9YmfGS@ESY zBCPLO7-o=l3X$_Y?0m{P+meNlX+oHn=P&j6Y0Ye;2aru(7s#57}RCv`mtGJMh zR@fJLS~&`c^w+?Cd$Mt!_U)!y7RBKy|Gf?f0x^S|R)|Pv-tn%HkV?l$ajW@t5#fX$ zrfSr~i;t2Lw(>_@8$;E#65m|*I)~rI(;Y*Wh2yJsA*th9F8JBtsKHS|^1uUve*qfs BYUls} diff --git a/data/styles/legacy/style-dark/hdpi/route-arrow.png b/data/styles/legacy/style-dark/hdpi/route-arrow.png index 1961f84d942845c8bd1e716d736b2d5c8ed67922..c54422803b6bedc1fa18c099d2cee49edb0376b2 100644 GIT binary patch literal 2389 zcmV-b399yqP)q3TnG83F#yw5vehqD!~TTkSGcTO$9<7ehi98 z40M}1DYVl5C^lh0x5lO1IPWJG%f4>^g4r(fDDr{!2W zzUb=t){sRT^uPU+v~I7$Lr&tlq6&fjK=7NnIhO9(isd`$-d+ZTjQ7qXCnQ7dwvGE< z1b~ej>lhG1qLJb7F`M1>w%ff4WgGX?K}cp(W_QXMr;Rl+K?AJsdXh66cY0@Dc`uOdud3?A^WsFD_e% zz+mX!kN_2Bc4wQMs$~~f{(=D^nah@yi*Rt~D(HGRdR39=3#7D{Fd$@7D4jnSr(9bw zW17X#OUf!;Yg5rn7!WdP%+AZj>HS+#^7x!lUIHnPrlOZHAY{^c^OeAcl7OzKjF&JVBynC+JQpqdVta|rZhkLeKuAK#pLyF$o*3;V5_i4i zdv+HCLNeG(cCW_T=SpLGiK?ll^b!VyJUB0T-WJnKf}v1XzG6NvVL-?O_mWflwqVAz zoY7vQo6k!a5c0s8Ju?@l_y0JymsFa^OBfJhJ};5OUZTnD?2=VKXFv$OWK_>PP!te> z?z~wK6*3@%Ug9$J5{n)R`E7RBIshoIX=FeMy~Myv8f=xW`lgyy58O)_5RxKZBG)Iw zOBfJhN-sII>jhJI2?Ih*$-?5t&|(5FVL*s!$v1(Q#0*$P_h_TTR*^HcyL9T-L(dgPYWR)l~VFZk>QJX5+)qn^t=sEJz0S2+TTG{ z?zyfP=>c@*<;}7JXir!L841AL(q&7_?5^toP5`nT0K-8dN!o0jrNwh&dr3H)5HC?i z!Xbo!t!%Zw?Cz zi6JBs5J{W@{m*UxHS!Vw2&k%RJy%yXAumy`wtj%Hl*c0%PPJsA#km0@ zN&bC+5ij{#u7Q{6y5CmmoRF7@GP`rdu#n%a94*exc;ulOJo+T1*!sr1`0GEejH)I= zhz766QSr>CTAZt^id)jlBNwb$vVh?rDao6=Ux?XXVykrd0mR*3q5!Z)3iFA0T0cf5oFAsOo>hjy(tsw9O%h?@m-zCND;AsNlW z;>U2xwFM8)njXC>r>{TQT4r}vFd!tO5dajU5tmW|icmD}B9f_G@ONOxz9z$=^3$hg zm!AIRw!bkTBqQ;h{0Q!5FDzM8qDqRmtZA@*-qSxo2O$~B%X{BNeapwA!XX5X`8OR5hwLD9TG-clD8_FCV~}gWK;cWIeZvR=0K=12-<^*)$C8EPd)DKT(Sx`MF`sXA-}a3@gD;~L zWrNRMU0+_)h^CrVaeua2P_h_#-*~bOQvPUUVJM{IH)k&3%Yh&so;4kLGp6z=5JQqZ z_2>nE2iEO5ioqd0dR0Kv)bF0JtNtSZw13z%uFvP>)nwcxd-7^`vk#t=#{C>O>FXNZTKo6A%xgjR_PLuvO4k&*;yL0*`G*E=o=URe#Ou?ydKAT+vZwKG#n$6 z4j}}jl<;{R4k46f06KXHh*^E(ht{Y{l3Hh4Xb_2o5<@V-?wDce&bk_Q0z z{L|JmzQa57A;d~RGy(Wbum_PuXh*U({7G8}mOBjlHv*cf7W>?edH~~+@iA|)BKgPiRl}_WmUS6b-p;dun8r66-jC70 zad>B;ltTlT8edPywrStQ)V@*i+U@aFqki*4+2Hkzzkh=PAt}u#Z5^npHGW=P)wBiY z-rC`xY~Nr&NJ=oKZ>U+;p3cPhMqCa;h$(#|JTx#F{Tr+xB#nGSRCqm(hD7@Y147K{ z8~zSd?MuFIFd!tAe4{}FNzQKSH`UV3+ z(# zK*%HqM8!v~pBmj(RgBC}b>8Dh={9o0D-su9G40PizL5^Ff{@9%(hAWorOdn4)773% z?P5U4WZZ@{cs-6HP191^Hy99-2r9gXcUF|wG~!%cRXT>BkhmR00tl)?v7SpK-!Ovx zAS5oNl$e&2edStb&$neL7~mcuB!VT|4!j2dYhFE)5$*jy39@)p{Gnf(00000NkvXX Hu0mjf+__!~ delta 907 zcmV;619be=5|#&$8Gi!+003{v%`X4|0MbxQR7C&)09AmhJY(pI`1)LZpU2bQ zJ!Or0m9ai%jiI#2#?s#6=R{$W`8*I<)vi>WL4bRic#kRWA>XE=Nb9-`shPg>?Z&K0!v9mK~#8N+|x-4 z!cY(f;TRPc5_pKX6dbP5o!Qy@Un#5j^KM{u-QZhP@lS0RMU3ox2?DWe3Ieh67zARb zQQ#1(PC+2HOCcZ{1rOnmVyar=AsPh@QRRUSX*CKP(tivZ1r2epdyRsI`2D3(&=7yH zM-jxEk48a5-0M-JfFb!PXh=Q^7D66H5cQr%S*@WE_9%j==U1Z;A?Q&A$-8M3HpIK% zD0?s@A7z6WWungBRucxIFbaD-G^j<=kdsAk3btv)Hk}}X7H#|fuOt}8Ui`w~-K@O9 zf_&MNJ%18%HP| zBE$_PZUVllx7z2&4JB+kK0FU_LrE_o6(GTJ^lIiH;JtD|5nwP$(~b3Bf{PhrGYqkOy=~VPCC9fPcomvDl|$GWK$9JC^9r@9v+63`8W4 zc_2p=Di3hT@ycV=mLDtT^g#dWu7n43`S2+`WF17~fn3lj5A@2kkWCP5iLE@y*9xWZ zfL-+H;fi?mrqknGz1^cQ2n0|NR`VZ%xrLg-ECdonu(0s{S4#PcDXoTgf+;>^+4Xpr zUVny?hckpcoFU{P4k_Sa3n33@2+tnQ5b{ul@arKAA&;~Aapt;#hb@FWlp*Bd3?UC` z2zZD?!sDs_5vJg1t_%SWYY2E)L%>5C5+3@H@bHIR!oxW5uns(|3lI6iL%#6Phjihg h4(T5WFmDf!KjK7YOhBWxYybcN07*qoLE}a1FH&<8Gi-<008Ix-?ab$00v@9M??Vs0RI60puMM)00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-yo5C;w{S@H3W000EINklF55=IrjpT ztf@V8atHvb-TtDE%c%6(Q|0ms0IF<}9eO;W{nFo7lyN00ea_eo-H0+vS$VMrBp~+* z=fVcTRmJUl8-D<5-u;|_lqy;xiMp3xKs=#C2ob7sdHYAdIJ~M}As{)T>m2UAmFPb5 z3X-}30CiO^?{!0#Y?aO~0#d5fR6LDuyBqPa%?bc^rt48ATgwSZ3A5$VjrgJWFrL}^ zSjsC9s^apR?iB)(M`TGt@c0|p|KiS+SAdLH8vF#LRDWrDtrp!!_AT-XGq|m?zKejA z&MQx0Xn|J@hA5K?_X+_iAdhGDim$E^uMiNEymDaPE22N+l^z08s(g^uE3hdp@5+GK z-)yIXxvc*n7)__-@eR2zg5H`X2^<9nrg9N0s&u~i*VlfL9r8K#HcMA0<&S55& z0DoglW0K?;JJYNZkP>9<_er#!nr{{-V6`}s@nnn~QiAjjj-a)7CI~Ayvc&M|xl6b>`WIDiNeW%W z7#p9&zSc9Ci6sDFLdfejB@#(B$8#4@<@R+#h<1YuXtex3pF)@4dk05wes1}lv4KdS zrEXV)A7eR|-!174s$+`V_p>aaWBo%`+Mr5L4y^EX4TE#M(=|Bn3&xl;oW&Q*&VLX9 z*s=c;{Q1pM!jMjt%PXd5kR+xt21hvHQ30$71_3eE7k{E67Ux=_ze^4=%@=aszMvUmf-f372XW(;Ildqu zYs?n}WQAFB*v&LwkVEplTP+gKes>igW_%Hf1U+`aB~yGsGbGR0tY!G}`>S(jbDfd& zf$1yvIWS#F=vybtB>k-u0MM8uIl_I-YB9#8zpUJu5WprFx=N)eacU3s3>*Vkbj-6D Z`5%QXJx0&pZan}1002ovPDHLkV1f^>XbAuS delta 482 zcmZ3@^^tjkWIZzj1H%Pn{dOSL9^ez=3Z!jQdqW#m*{1c|r}x{W^w_5K07(e4PwBHy z?*l5ZOY5~u?FBMyQhNeRX9CqYfW>_Zr`e?SdKXL$ESUk+^8f$;cIhA5i_O-Dm4p?>YPP*Y9&T9yQI`cJ}(C<~iF+Caz6tT5Oc)JPqg; z$&w(yV1{RGl9oS@%}m>5`!_Y+YS!OXRT)RGRbN|uT|mc=fq{|1)5S5Qg7NAN*1R?c z2A9OTgA4OEN8Ej1zt=10)yCS{C3+u(>}|1CY{e|$EJ;M#4RN~f&tK5Z+STd%Na zF|X{->4_UWEcPEskm2MPW_#=*F<(_w+Ds_VQo@~y<1q&qomg++yEmwX_5CB+WxsA% z+?cH7zVDz(o=bO4^U9^mEsxwapD~rigy->RrWuI`IucKGB<|=)yd~FnCuXlJ-_65c zH8QtOo;XpJ@y}hA%<|s2p6mHCmFMq9hn;D>r!f8D=gF^Cf}Tpd?_4Gq^=!q4T~d<$U+eF_|0NEVlj_bbl;O1BsM+^rzpbCSwgTDVMq}>l;O3zMW%>R zptMw=js=7?0s->cWbf%8n+?*^6eN#L_I&=!4Rdqmp3j`$?|$#S2T-&)W2dhwo{+UZ z4Z!Bejl1y)HAO9t#qNmP7`fj!w=~|yr>QAw9i)_f>h!vcR)=?tl0xyHa{SR^ z_vXY?DN$0iwtp001nIWeJsU7+X#k^VtW#1XDh5p>)ohCWn4#Cz9kDsQJ@@C0R40+Pgxw^5urjS7Kc|!k%0XKy}Ebd&83qWKCm}+kqCep zDGyp4-uWTFi%~ycp`=JeI;JJF$~BRvMh|JIEJ(S+YJc~>n zp7A7AHMPiS6Z%uB>mQBDTzyZ#?^IGGDz>5Drr0~3`?_?9^%;F@_1cS8yT_`eNMOF+ ztrMGRTkEeaMqN7s&Nu|8v9 zB%=SrYWEHc6gjcly-JEiWWWRW^X9V24C&W1mS?0$k1aR7?tswk|Gi5oSwqE z7oX+Fw!yJOMv3%T9o|iv!IT_rLRTs&5|IT{et*Qv)1II*mS;%$yp)lWG1J#}3HY*= z6p6~1VSU;5dM4dErxS_x8U1T(t1npX-bb2DipQp{htUJn)ow%dzP~G*mQ7*AgT1M( zivXA;@_@zeSqfnLiVxJp#Oz%DSuQ#B8y8l`%I`=SnFUM&x~t3HY)C+KOiO0xs+mo4 z!hhu(cky267^42xRlphn^8-chDr@FSf_G3>v>QTrmrEHr4$M(PG&@cHZtTJ-KV0HsBjdh&E1_4yhC_e2&LQ z4T>E~l9JU{hj)X}4CZK_k=y9q$CCg(@9V;YeZHoyXglJUznH)h$KzDhgrj|ilz$nz z9{F(Wj5VDCK4+s+d=sMY3!0PE3enyeKcYWdmOJR$DJ_;~3=D_E=dE_n@W!Mt1F@z= z(GKa;^IqOsHicpRd&TmMR0$!g!@KBKd4@_f6NChzO#Dr0UkWvDeq?E5%?VcQj zFaucYpPMKt5{xDG3A{Y@iH4*>f`41r_4jRdPsgAy8;jkeq)0@@4(~^v`x!c=r=Uky zjiFMAa~8X2aHzsUNGa2S!&ZlPrjjC|5&YNvg+NpHpb5&y zpPXe;{_nYbtulJ&Da3UFqk=xyQ6)tJvhRbFEG~E#AsV8H5>1n10)_5!Yk#H}B}Ibq ztD^VVb?C&6N9+QRZqOD73Y^trr{%J@z^NL|MB!RRHFG?_W9Ofa$AkzY#NwdeJLlF=Ln3c1IBY*vjny^|i+A>$JRWfbG+w2S- ziyf*(h`B+(E2E~mrsh^9RrvHam=Qc}{$ee1I>-R-$m%-sfgb>l9U6zm|yoD{A9LVvtv(6k}@)@NO6iv6&Z z6m5v|>s8Fk*+TJwk7I}GgkWCC?|Qx}Tw5K@AMSo@MO8l92!H$Z0x#ulr|imgjM4s~ zN(gL0zx#vR{Txt9(T;fk=o#j(-Ht9LnkE2FXa>W$KwO>y98 zbnk*_icqL&x_>iJm|Z!3Rvx?8&TjI*sd|byrJ^c~d-XQn+4Esk1*nVW53Xros05lt z2(?ngDd+xG&YYYreEvl_rs$`f5g`~C^t%I1)l4cW+7Q8#Q#e;`#cXQGA3mwiAIe&4 z461y@5jmT8vnaoqWK%=_u*INh-`lr7tE{>A<5p6{8GlzRs+pU+m2LYTv8=CpAs`LBQuc+Z_3WDj#ith^|v{Lx?wkVF91>tTl6Gs|lf`h=&pa5g~*( zROHUkgi@#g?r6_TRX*BT`KV`HsK~uHp2nvd%~oqNIb#soBl~^M(s&!2Dj%(YDap7a nJ;gkDzt34}Yo-5?wlV$Dc4eg00000NkvXXu0mjf3p;Fl delta 876 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 O7NDiBuU4UA8}UCwPA2>S literal 1575 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 8 * (n)) & 0xFF); +#define CHANNEL_TO_FLOAT(x) ((x) / static_cast(MaxChannelValue)) Color::Color() : m_rgba(MaxChannelValue) @@ -42,6 +43,26 @@ uint8_t Color::GetAlfa() const return EXTRACT_BYTE(m_rgba, 0); } +float Color::GetRedF() const +{ + return CHANNEL_TO_FLOAT(GetRed()); +} + +float Color::GetGreenF() const +{ + return CHANNEL_TO_FLOAT(GetGreen()); +} + +float Color::GetBlueF() const +{ + return CHANNEL_TO_FLOAT(GetBlue()); +} + +float Color::GetAlfaF() const +{ + return CHANNEL_TO_FLOAT(GetAlfa()); +} + uint8_t ExtractRed(uint32_t argb) { return (argb >> 16) & 0xFF; diff --git a/drape/color.hpp b/drape/color.hpp index 071ad118ed..d861a5461b 100644 --- a/drape/color.hpp +++ b/drape/color.hpp @@ -17,6 +17,11 @@ struct Color uint8_t GetBlue() const; uint8_t GetAlfa() const; + float GetRedF() const; + float GetGreenF() const; + float GetBlueF() const; + float GetAlfaF() 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; } diff --git a/drape/shaders/line_fragment_shader.fsh b/drape/shaders/line_fragment_shader.fsh index d646a9ec75..785d84ee00 100644 --- a/drape/shaders/line_fragment_shader.fsh +++ b/drape/shaders/line_fragment_shader.fsh @@ -7,7 +7,11 @@ uniform float u_opacity; void main(void) { + float mask = texture2D(u_maskTex, v_maskTexCoord).a; + if (mask < 0.1) + discard; + vec4 color = texture2D(u_colorTex, v_colorTexCoord); - color.a *= (u_opacity * texture2D(u_maskTex, v_maskTexCoord).a); + color.a *= u_opacity; gl_FragColor = color; } diff --git a/drape/shaders/texturing_fragment_shader.fsh b/drape/shaders/texturing_fragment_shader.fsh index 1f70af3dca..8cce8ee43e 100644 --- a/drape/shaders/texturing_fragment_shader.fsh +++ b/drape/shaders/texturing_fragment_shader.fsh @@ -6,6 +6,9 @@ varying vec2 v_colorTexCoords; void main(void) { vec4 finalColor = texture2D(u_colorTex, v_colorTexCoords); + if (finalColor.a < 0.1) + discard; + finalColor.a *= u_opacity; gl_FragColor = finalColor; } diff --git a/drape_frontend/drape_frontend_tests/anyrect_interpolation_tests.cpp b/drape_frontend/drape_frontend_tests/anyrect_interpolation_tests.cpp index c24d33d32c..0c99a23049 100644 --- a/drape_frontend/drape_frontend_tests/anyrect_interpolation_tests.cpp +++ b/drape_frontend/drape_frontend_tests/anyrect_interpolation_tests.cpp @@ -8,13 +8,13 @@ namespace void IsEqual(m2::AnyRectD const & r1, m2::AnyRectD const & r2) { TEST(r1.LocalZero().EqualDxDy(r2.LocalZero(), 0.00001), ()); - TEST_ALMOST_EQUAL(ang::AngleIn2PI(r1.Angle().val()), ang::AngleIn2PI(r2.Angle().val()), ()); + TEST_ALMOST_EQUAL_ULPS(ang::AngleIn2PI(r1.Angle().val()), ang::AngleIn2PI(r2.Angle().val()), ()); m2::RectD lR1 = r1.GetLocalRect(); m2::RectD lR2 = r2.GetLocalRect(); - TEST_ALMOST_EQUAL(lR1.minX(), lR2.minX(), ()); - TEST_ALMOST_EQUAL(lR1.minY(), lR2.minY(), ()); - TEST_ALMOST_EQUAL(lR1.maxX(), lR2.maxX(), ()); - TEST_ALMOST_EQUAL(lR1.maxY(), lR2.maxY(), ()); + TEST_ALMOST_EQUAL_ULPS(lR1.minX(), lR2.minX(), ()); + TEST_ALMOST_EQUAL_ULPS(lR1.minY(), lR2.minY(), ()); + TEST_ALMOST_EQUAL_ULPS(lR1.maxX(), lR2.maxX(), ()); + TEST_ALMOST_EQUAL_ULPS(lR1.maxY(), lR2.maxY(), ()); } } diff --git a/drape_frontend/drape_frontend_tests/skin_tests.cpp b/drape_frontend/drape_frontend_tests/skin_tests.cpp index e84dc6dc41..769e039d1d 100644 --- a/drape_frontend/drape_frontend_tests/skin_tests.cpp +++ b/drape_frontend/drape_frontend_tests/skin_tests.cpp @@ -12,18 +12,18 @@ UNIT_TEST(ParseDefaultSkinTest) gui::Position compassPos = skin.ResolvePosition(gui::WIDGET_COMPASS); TEST_EQUAL(compassPos.m_anchor, dp::Center, ()); - TEST_ALMOST_EQUAL(compassPos.m_pixelPivot.x, 27.0f * 2.0f, ()); - TEST_ALMOST_EQUAL(compassPos.m_pixelPivot.y, height - 57.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(compassPos.m_pixelPivot.x, 27.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(compassPos.m_pixelPivot.y, height - 57.0f * 2.0f, ()); gui::Position rulerPos = skin.ResolvePosition(gui::WIDGET_RULER); TEST_EQUAL(rulerPos.m_anchor, dp::Right, ()); - TEST_ALMOST_EQUAL(rulerPos.m_pixelPivot.x, width - 6.0f * 2.0f, ()); - TEST_ALMOST_EQUAL(rulerPos.m_pixelPivot.y, height - 42.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(rulerPos.m_pixelPivot.x, width - 6.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(rulerPos.m_pixelPivot.y, height - 42.0f * 2.0f, ()); gui::Position copyRightPos = skin.ResolvePosition(gui::WIDGET_COPYRIGHT); TEST_EQUAL(copyRightPos.m_anchor, dp::Right, ()); - TEST_ALMOST_EQUAL(copyRightPos.m_pixelPivot.x, width - 6.0f * 2.0f, ()); - TEST_ALMOST_EQUAL(copyRightPos.m_pixelPivot.y, height - 42.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(copyRightPos.m_pixelPivot.x, width - 6.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(copyRightPos.m_pixelPivot.y, height - 42.0f * 2.0f, ()); { width = 800.0f; @@ -32,17 +32,17 @@ UNIT_TEST(ParseDefaultSkinTest) gui::Position compassPos = skin.ResolvePosition(gui::WIDGET_COMPASS); TEST_EQUAL(compassPos.m_anchor, dp::Center, ()); - TEST_ALMOST_EQUAL(compassPos.m_pixelPivot.x, 18.0f * 2.0f, ()); - TEST_ALMOST_EQUAL(compassPos.m_pixelPivot.y, height - 11.4f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(compassPos.m_pixelPivot.x, 18.0f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(compassPos.m_pixelPivot.y, height - 11.4f * 2.0f, ()); gui::Position rulerPos = skin.ResolvePosition(gui::WIDGET_RULER); TEST_EQUAL(rulerPos.m_anchor, dp::Right, ()); - TEST_ALMOST_EQUAL(rulerPos.m_pixelPivot.x, width - 70.4f * 2.0f, ()); - TEST_ALMOST_EQUAL(rulerPos.m_pixelPivot.y, height - 10.5f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(rulerPos.m_pixelPivot.x, width - 70.4f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(rulerPos.m_pixelPivot.y, height - 10.5f * 2.0f, ()); gui::Position copyRightPos = skin.ResolvePosition(gui::WIDGET_COPYRIGHT); TEST_EQUAL(copyRightPos.m_anchor, dp::Right, ()); - TEST_ALMOST_EQUAL(copyRightPos.m_pixelPivot.x, width - 70.4f * 2.0f, ()); - TEST_ALMOST_EQUAL(copyRightPos.m_pixelPivot.y, height - 10.5f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(copyRightPos.m_pixelPivot.x, width - 70.4f * 2.0f, ()); + TEST_ALMOST_EQUAL_ULPS(copyRightPos.m_pixelPivot.y, height - 10.5f * 2.0f, ()); } } diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 9e1beecea6..bbbb1bcd31 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -10,6 +10,7 @@ #include "drape/utils/projection.hpp" #include "indexer/scales.hpp" +#include "indexer/drawing_rules.hpp" #include "geometry/any_rect2d.hpp" @@ -582,6 +583,13 @@ void FrontendRenderer::RefreshModelView(ScreenBase const & screen) m_generalUniforms.SetMatrix4x4Value("modelView", mv.m_data); } +void FrontendRenderer::RefreshBgColor() +{ + uint32_t color = drule::rules().GetBgColor(); + dp::Color c = dp::Extract(color, 255 - (color >> 24)); + GLFunctions::glClearColor(c.GetRedF(), c.GetGreenF(), c.GetBlueF(), 1.0f); +} + int FrontendRenderer::GetCurrentZoomLevel() const { return m_currentZoomLevel; @@ -720,7 +728,8 @@ void FrontendRenderer::Routine::Do() GLFunctions::glPixelStore(gl_const::GLUnpackAlignment, 1); GLFunctions::glEnable(gl_const::GLDepthTest); - GLFunctions::glClearColor(0.93f, 0.93f, 0.86f, 1.f); + m_renderer.RefreshBgColor(); + GLFunctions::glClearDepthValue(1.0); GLFunctions::glDepthFunc(gl_const::GLLessOrEqual); GLFunctions::glDepthMask(true); @@ -863,6 +872,7 @@ ScreenBase const & FrontendRenderer::UpdateScene(bool & modelViewChanged) MessagePriority::High); RefreshModelView(modelView); + RefreshBgColor(); EmitModelViewChanged(modelView); } diff --git a/drape_frontend/frontend_renderer.hpp b/drape_frontend/frontend_renderer.hpp index 72d93dfa5f..37d1981cfb 100755 --- a/drape_frontend/frontend_renderer.hpp +++ b/drape_frontend/frontend_renderer.hpp @@ -131,6 +131,7 @@ private: void RenderSingleGroup(ScreenBase const & modelView, ref_ptr group); void RefreshProjection(); void RefreshModelView(ScreenBase const & screen); + void RefreshBgColor(); ScreenBase const & UpdateScene(bool & modelViewChanged); void EmitModelViewChanged(ScreenBase const & modelView) const; diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp index d8d069a9b1..5e34522480 100755 --- a/drape_frontend/render_group.cpp +++ b/drape_frontend/render_group.cpp @@ -110,7 +110,7 @@ bool RenderGroupComparator::operator()(drape_ptr const & l, drape_p if (lDepth != rDepth) return lDepth < rDepth; - if (my::AlmostEqual(l->GetOpacity(), r->GetOpacity())) + if (my::AlmostEqualULPs(l->GetOpacity(), r->GetOpacity())) return lState < rState; else return l->GetOpacity() > r->GetOpacity(); diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm index a5823e1421..5b76472c85 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/ZoomButtons/MWMZoomButtons.mm @@ -50,11 +50,6 @@ extern NSString * const kAlohalyticsTapEventKey; self.zoomView.bottomBound = bound; } -- (void)zoom:(CGFloat)scale -{ - GetFramework().Scale(scale); -} - - (void)zoomIn { [[Statistics instance] logEvent:kStatEventName(kStatZoom, kStatIn)]; @@ -97,7 +92,7 @@ extern NSString * const kAlohalyticsTapEventKey; UIView * const superview = self.zoomView.superview; CGFloat const translation = -[sender translationInView:superview].y / superview.bounds.size.height; - CGFloat const scaleFactor = pow(2, translation); + CGFloat const scaleFactor = exp(translation); GetFramework().Scale(scaleFactor, false); } diff --git a/iphone/Maps/Classes/EAGLView.h b/iphone/Maps/Classes/EAGLView.h index 0009257fd2..ec9f0afdeb 100644 --- a/iphone/Maps/Classes/EAGLView.h +++ b/iphone/Maps/Classes/EAGLView.h @@ -22,7 +22,6 @@ namespace dp } - (void)initRenderPolicy; -- (void)setMapStyle:(MapStyle)mapStyle; - (void)deallocateNative; - (CGPoint)viewPoint2GlobalPoint:(CGPoint)pt; - (CGPoint)globalPoint2ViewPoint:(CGPoint)pt; diff --git a/iphone/Maps/Classes/EAGLView.mm b/iphone/Maps/Classes/EAGLView.mm index eb5cfc2a42..0f815a443e 100644 --- a/iphone/Maps/Classes/EAGLView.mm +++ b/iphone/Maps/Classes/EAGLView.mm @@ -145,11 +145,6 @@ graphics::EDensity getDensityType(int exactDensityDPI, double scale) } } -- (void)setMapStyle:(MapStyle)mapStyle -{ - //@TODO UVR -} - - (void)onSize:(int)width withHeight:(int)height { int w = width * self.contentScaleFactor; diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index dc919f8cfa..67ef23f805 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -242,18 +242,6 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) GetFramework().SwitchMyPositionNextMode(); } -- (IBAction)zoomInPressed:(id)sender -{ - [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"+"]; - GetFramework().Scale(Framework::SCALE_MAG, true); -} - -- (IBAction)zoomOutPressed:(id)sender -{ - [Alohalytics logEvent:kAlohalyticsTapEventKey withValue:@"-"]; - GetFramework().Scale(Framework::SCALE_MIN, true); -} - - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { [self destroyPopover]; @@ -369,8 +357,7 @@ typedef NS_ENUM(NSUInteger, UserTouchesAction) - (void)setMapStyle:(MapStyle)mapStyle { - EAGLView * v = (EAGLView *)self.view; - [v setMapStyle: mapStyle]; + GetFramework().SetMapStyle(mapStyle); } - (void)onEnterForeground @@ -866,29 +853,6 @@ NSInteger compareAddress(id l, id r, void * context) [[MapsAppDelegate theApp] enableStandby]; } -- (void)setUserTouchesAction:(UserTouchesAction)userTouchesAction -{ - if (_userTouchesAction == userTouchesAction) - return; - Framework & f = GetFramework(); - switch (userTouchesAction) - { - case UserTouchesActionNone: - if (_userTouchesAction == UserTouchesActionDrag) - f.StopDrag(DragEvent(m_Pt1.x, m_Pt1.y)); - else if (_userTouchesAction == UserTouchesActionScale) - f.StopScale(ScaleEvent(m_Pt1.x, m_Pt1.y, m_Pt2.x, m_Pt2.y)); - break; - case UserTouchesActionDrag: - f.StartDrag(DragEvent(m_Pt1.x, m_Pt1.y)); - break; - case UserTouchesActionScale: - f.StartScale(ScaleEvent(m_Pt1.x, m_Pt1.y, m_Pt2.x, m_Pt2.y)); - break; - } - _userTouchesAction = userTouchesAction; -} - #pragma mark - Properties - (void)setAppWallAd:(MTRGNativeAppwallAd *)appWallAd diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index da7c2e7f5f..f4781d9fee 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -216,7 +216,7 @@ void InitLocalizedStrings() Framework & f = GetFramework(); application.applicationIconBadgeNumber = f.GetCountryTree().GetActiveMapLayout().GetOutOfDateCount(); - f.GetLocationState()->InvalidatePosition(); + f.InvalidateMyPosition(); [self enableTTSForTheFirstTime]; [MWMTextToSpeech activateAudioSession]; diff --git a/map/framework.cpp b/map/framework.cpp index fcb410a6b7..e280a5d968 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -855,7 +855,7 @@ void Framework::ClearAllCaches() void Framework::OnDownloadMapCallback(storage::TIndex const & countryIndex) { - m_activeMaps->DownloadMap(countryIndex, TMapOptions::EMapOnly); + m_activeMaps->DownloadMap(countryIndex, TMapOptions::EMap); } void Framework::OnDownloadMapRoutingCallback(storage::TIndex const & countryIndex) diff --git a/map/storage_bridge.hpp b/map/storage_bridge.hpp index c715a71209..446d771578 100644 --- a/map/storage_bridge.hpp +++ b/map/storage_bridge.hpp @@ -20,7 +20,7 @@ public: void CountryStatusChanged(storage::ActiveMapsLayout::TGroup const & group, int position, storage::TStatus const & oldStatus, storage::TStatus const & newStatus) override; void CountryOptionsChanged(storage::ActiveMapsLayout::TGroup const & group, int position, - storage::TMapOptions const & oldOpt, storage::TMapOptions const & newOpt) override; + TMapOptions const & oldOpt, TMapOptions const & newOpt) override; void DownloadingProgressUpdate(storage::ActiveMapsLayout::TGroup const & group, int position, storage::LocalAndRemoteSizeT const & progress) override; diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index fccd3e1266..a83adf994a 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -323,7 +323,7 @@ bool IsLocationEmulation(QMouseEvent * e) void DrawWidget::SetMapStyle(MapStyle mapStyle) { - //@TODO UVR + m_framework->SetMapStyle(mapStyle); } void DrawWidget::sizeChanged(int) diff --git a/tools/android/update_assets_for_version.sh b/tools/android/update_assets_for_version.sh index 07f1e887fe..651c24a33f 100755 --- a/tools/android/update_assets_for_version.sh +++ b/tools/android/update_assets_for_version.sh @@ -8,7 +8,7 @@ DST=$2 rm -rf $DST || true mkdir $DST || true -files=(copyright.html faq.html resources-ldpi resources-mdpi resources-hdpi resources-xhdpi resources-xxhdpi categories.txt classificator.txt +files=(copyright.html faq.html resources-default resources-ldpi resources-mdpi resources-hdpi resources-xhdpi resources-xxhdpi categories.txt classificator.txt resources-ldpi_dark resources-mdpi_dark resources-hdpi_dark resources-xhdpi_dark resources-xxhdpi_dark resources-ldpi_clear resources-mdpi_clear resources-hdpi_clear resources-xhdpi_clear resources-xxhdpi_clear types.txt fonts_blacklist.txt fonts_whitelist.txt languages.txt unicode_blocks.txt diff --git a/tools/unix/generate_symbols.sh b/tools/unix/generate_symbols.sh index ead8dce85e..b6ae153a65 100755 --- a/tools/unix/generate_symbols.sh +++ b/tools/unix/generate_symbols.sh @@ -4,6 +4,10 @@ set -e -u -x MY_PATH=`pwd` BINARY_PATH="$MY_PATH/../../out/release/skin_generator" DATA_PATH="$MY_PATH/../../data" +DETECT_QMAKE="$MY_PATH/../autobuild/detect_qmake.sh" + +source "$DETECT_QMAKE" +QMAKE="$(PrintQmakePath)" || ( echo "ERROR: qmake was not found, please add it to your PATH or into the tools/autobuild/detect_qmake.sh"; exit 1 ) # If skin_generator does not exist then build it if [ ! -f $BINARY_PATH ]; @@ -12,14 +16,14 @@ then for project in ${projects[*]} do cd $MY_PATH/../../3party/$project - qmake $project.pro -r -spec macx-clang CONFIG+=x86_64 + "$QMAKE" $project.pro -r -spec macx-clang CONFIG+=x86_64 make done projects=(base coding geometry skin_generator) for project in ${projects[*]} do cd $MY_PATH/../../$project - qmake $project.pro -r -spec macx-clang CONFIG+=x86_64 + "$QMAKE" $project.pro -r -spec macx-clang CONFIG+=x86_64 make done cd $MY_PATH