Compare commits

..

1 Commits

Author SHA1 Message Date
Jean-Baptiste
3f0adabde7 [android] Bump gradle to 9.2.1
Signed-off-by: Jean-Baptiste <jeanbaptiste.charron@outlook.fr>
2026-01-17 15:04:30 +01:00
36 changed files with 129 additions and 441 deletions

View File

@@ -34,63 +34,19 @@ on:
- track_generator/**
- xcode/**
env:
SUBMODULE_CACHE_PATHS: |
.git/modules
3party/CMake-MetalShaderSupport
3party/Vulkan-Headers
3party/boost
3party/expat
3party/fast_double_parser
3party/fast_obj
3party/freetype/freetype
3party/gflags
3party/glaze
3party/glfw
3party/glm
3party/googletest
3party/harfbuzz/harfbuzz
3party/icu/icu
3party/imgui/imgui
3party/jansson/jansson
3party/just_gtfs
3party/protobuf/protobuf
3party/pugixml/pugixml
3party/utfcpp
tools/kothic
tools/osmctools
jobs:
lint:
name: Android Lint
runs-on: ubuntu-latest
container:
image: codeberg.org/comaps/docker-android-sdk:ubuntu-standalone-zy-docker
options: --user root
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Cache world map
uses: actions/cache@v4
with:
path: data/world_mwm
key: world-mwm
- uses: actions/cache@v4
with:
path: ${{ env.SUBMODULE_CACHE_PATHS }}
key: submodules-${{ hashFiles('.gitmodules') }}
restore-keys: |
submodules-
- name: Sync and update submodules
- name: Parallel submodules checkout
shell: bash
run: |
git submodule sync --recursive
git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Lint
shell: bash
@@ -100,9 +56,6 @@ jobs:
android-check:
name: Build Android Debug
runs-on: ubuntu-latest
container:
image: codeberg.org/comaps/docker-android-sdk:ubuntu-standalone-zy-docker
options: --user root
strategy:
fail-fast: false
matrix:
@@ -118,32 +71,23 @@ jobs:
cancel-in-progress: true
steps:
- name: Install build tools and dependencies
shell: bash
run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 200 # enough to get all commits for the current day
- name: Cache world map
uses: actions/cache@v4
with:
path: data/world_mwm
key: world-mwm
- uses: actions/cache@v4
with:
path: ${{ env.SUBMODULE_CACHE_PATHS }}
key: submodules-${{ hashFiles('.gitmodules') }}
restore-keys: |
submodules-
- name: Sync and update submodules
- name: Parallel submodules checkout
shell: bash
run: |
git submodule sync --recursive
git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Configure ccache
uses: https://github.com/hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ github.workflow }}-${{ matrix.flavor }}
@@ -153,11 +97,14 @@ jobs:
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
run: ./gradlew -P${{ matrix.arch }} assemble${{ matrix.flavor }}
run: |
cmake --version
ninja --version
./gradlew -P${{ matrix.arch }} assemble${{ matrix.flavor }}
- name: Upload ${{ matrix.flavor }} apk
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: android-${{ matrix.flavor }}
path: android/app/build/outputs/apk/**/*.apk
path: android/app/build/outputs/apk/**/OrganicMaps-*.apk
if-no-files-found: error

View File

@@ -5,6 +5,45 @@
android:viewportWidth="74"
android:viewportHeight="57">
<path
android:pathData="m67.3,21.772 l-28.103,11.757 11.772,5.095 5.463,11.606z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#757575"
android:pathData="m26.278,8.137c3.695,-3.729 9.719,-3.761 13.453,-0.073 3.736,3.687 3.769,9.699 0.074,13.425l-14.597,14.726c-2.353,2.373 -2.331,6.197 0.046,8.544 2.379,2.345 6.209,2.326 8.562,-0.048l14.303,-14.428c-0.155,-0.32 -0.286,-0.647 -0.394,-0.978l-4.006,0.001c-2.787,0 -3.659,-3.825 -1.045,-5.042l7.813,-3.604c0.879,-0.652 1.87,-1.098 2.9,-1.333l11.936,-5.495c2.091,-0.869 4.357,1.392 3.486,3.478l-10.454,22.603c-1.219,2.607 -5.053,1.736 -5.053,-1.044v-4.418c-0.506,-0.122 -1.006,-0.296 -1.494,-0.525l-14.303,14.428c-4.368,4.406 -11.485,4.444 -15.901,0.086 -4.413,-4.358 -4.452,-11.461 -0.084,-15.867l14.597,-14.726c1.68,-1.693 1.665,-4.426 -0.033,-6.102 -1.7,-1.677 -4.437,-1.662 -6.117,0.033l-9.43,9.516c0.436,0.994 0.679,2.091 0.679,3.244 0,4.464 -3.634,8.091 -8.108,8.091 -4.475,0 -8.108,-3.627 -8.108,-8.091 0,-4.466 3.633,-8.091 8.108,-8.091 1.424,0 2.764,0.367 3.928,1.012z" />
android:strokeColor="#757575" />
<path
android:pathData="M45.042,44.7m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M37.942,51.6m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M27.842,52m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="m26.942,43.5c0,2.485 -2.015,4.5 -4.5,4.5 -2.485,0 -4.5,-2.015 -4.5,-4.5 0,-2.485 2.015,-4.5 4.5,-4.5 2.485,0 4.5,2.015 4.5,4.5z"
android:fillColor="#757575" />
<path
android:pathData="M26.642,34.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M34.042,27.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M40.842,20.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M41.842,10.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M32.842,4.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M23.842,9.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M16.842,16.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
<path
android:pathData="M9.842,23.5m-4.5,0a4.5,4.5 0,1 1,9 0a4.5,4.5 0,1 1,-9 0"
android:fillColor="#757575" />
</vector>

View File

@@ -9,6 +9,45 @@
android:fillColor="@color/active_track_recording"
android:fillAlpha="0.78" />
<path
android:pathData="m33.024,19.508c3.955,-3.981 10.402,-4.015 14.399,-0.078 3.999,3.937 4.034,10.355 0.079,14.333l-15.623,15.722c-2.518,2.534 -2.495,6.616 0.049,9.122 2.546,2.504 6.646,2.483 9.164,-0.051l15.309,-15.404c-0.166,-0.342 -0.306,-0.691 -0.422,-1.044l-4.288,0.001c-2.983,0 -3.916,-4.084 -1.118,-5.383l8.362,-3.848c0.941,-0.696 2.001,-1.172 3.104,-1.423l12.775,-5.867c2.238,-0.928 4.663,1.486 3.731,3.713l-11.189,24.132c-1.305,2.783 -5.408,1.854 -5.408,-1.115l-0,-4.717c-0.542,-0.13 -1.077,-0.316 -1.599,-0.561l-15.309,15.404c-4.675,4.704 -12.293,4.745 -17.019,0.092 -4.723,-4.653 -4.765,-12.237 -0.09,-16.941l15.623,-15.722c1.798,-1.808 1.782,-4.725 -0.035,-6.515 -1.819,-1.79 -4.749,-1.774 -6.547,0.035l-10.093,10.16c0.467,1.061 0.727,2.232 0.727,3.464 0,4.766 -3.89,8.638 -8.678,8.638 -4.79,0 -8.678,-3.872 -8.678,-8.638 0,-4.768 3.888,-8.638 8.678,-8.638 1.524,0 2.958,0.392 4.204,1.081z"
android:fillColor="#ffffff"/>
android:pathData="m78.907,32.87 l-31.833,13.318 13.335,5.772 6.188,13.147z"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#ffffff"
android:strokeColor="#ffffff" />
<path
android:pathData="M49.731,57.709a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M41.688,65.525a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M30.247,65.978a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="m34.324,56.35c0,2.815 -2.282,5.097 -5.097,5.097 -2.815,0 -5.097,-2.282 -5.097,-5.097 0,-2.815 2.282,-5.097 5.097,-5.097 2.815,0 5.097,2.282 5.097,5.097z"
android:fillColor="#ffffff" />
<path
android:pathData="M28.888,46.155a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M37.27,38.226a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M44.974,30.297a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M46.106,18.969a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M35.911,12.173a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M25.718,17.837a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M17.788,25.766a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
<path
android:pathData="M9.858,33.695a5.097,5.097 0,1 0,10.195 0a5.097,5.097 0,1 0,-10.195 0z"
android:fillColor="#ffffff" />
</vector>

View File

@@ -1,8 +1,8 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f

View File

@@ -153,7 +153,7 @@ project.afterEvaluate {
final taskName = gradle.startParameter.taskNames
if (['assemble', 'bundle', 'compile', 'install', 'lint', 'publish', 'run'].any{taskName.any{task->task.startsWith(it)}}) {
if (['assemble', 'bundle', 'compile', 'install', 'run', 'publish'].any{taskName.any{task->task.startsWith(it)}}) {
exec {
workingDir '../..'

View File

@@ -1 +0,0 @@
../../../../../data/countries_meta.txt

View File

@@ -1,9 +1,9 @@
{
"World": {
"languages": []
"languages": ["int_name", "en", "default"]
},
"WorldCoasts": {
"languages": []
"languages": ["int_name", "en", "default"]
},
"Abkhazia": {
"languages": ["ab", "ru"]

View File

@@ -475,7 +475,6 @@ amenity|parking|multi-storey;[amenity=parking][parking=multi-storey];;name;int_n
# TODO: its being replaced by landuse-recreation_ground, merge in there.
leisure|recreation_ground;360;
deprecated:highway|footway|mountain_hiking:04.2024;[highway=footway][sac_scale=mountain_hiking];x;name;int_name;361;highway|path
# Workaround for (mis)uses of emergency access points to provide kind of an additional emergency address to each house, which without this would completely clutter the map. See https://codeberg.org/comaps/comaps/pulls/3220.
emergency|access_point|address;[emergency=access_point][operator=helpbidea];;name;;362;
amenity|parking|multi-storey|fee;[amenity=parking][parking=multi-storey][fee];;name;int_name;363;
sport|9pin;364;
Can't render this file because it contains an unexpected character in line 7 and column 16.

View File

@@ -1 +1 @@
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#000" height="18" opacity=".6" rx="1.875" width="18"/><rect fill="#2f6499" height="16.5" rx="1.5" width="16.5" x=".75" y=".75"/><path d="m6.41350421 14.75c-.95 0-1.674375-.676875-1.7444375-1.6019375l-.0055625-.1480625v-.0833333l.25-6.1666667c0-.91666667.75-1.66666667 1.66666667-1.58333333h1.58333333v-.75c-.5 0-.91666667.16666666-1.08333333.16666666-.41666667.08333334-.83333334-.16666666-.91666667-.58333333s.08333333-.83333333.41666667-1l.11922451-.02060859c.27673179-.05556686.98917837-.2057297 1.91374923-.22689803l.38536266-.00204645-.00000307.26264718.00249272-.26264718.1683364-.00044693c1.24999997 0 2.16666667.25 2.24999997.25.3333334.16666667.5.58333333.4166667 1s-.5.66666667-.9166667.58333333c-.1666666 0-.5833333-.16666666-1.0833333-.16666666v.75h1.5833333c.8708334-.07916667 1.59125.59374999 1.6611146 1.44716666l.2555521 6.30283337v.0833333l-.0055625.1480625c-.0700625.9250625-.7944375 1.6019375-1.7444375 1.6019375zm.08333333-2.6666667c-.41666666 0-.75.3333334-.75.75 0 .4166667.33333334.75.75.75.41666667 0 .75-.4166666.75-.8333333s-.33333333-.6666667-.75-.6666667zm5.00582916 0c-.4166667 0-.75.25-.75.6666667s.3333333.8333333.75.8333333c.4166666 0 .75-.3333333.75-.75 0-.4166666-.3333334-.75-.75-.75zm-4.58916249-5.66666663c-.46428571 0-.85671769.3592687-.9104106.87764213l-.00625607.12235787-.08333333 2.41666666c0 .58333337.41666667.99999997.91666667.99999997h4.33916242c.5 0 .9166667-.4166666.9166667-.99999997l-.0833333-2.41666666-.0062561-.12235787c-.0536929-.51837343-.4461249-.87764213-.9104106-.87764213z" fill="#000"/></g></svg>
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#000" height="18" opacity=".6" rx="1.875" width="18"/><rect fill="#2f6499" height="16.5" rx="1.5" width="16.5" x=".75" y=".75"/><path d="m12.9135042 6.75c-.0833333-1-.8333333-1.66666667-1.75-1.66666667h-1.49999999v-.75c.33333333 0 .74999999.08333334 1.16666669.16666667.3333333.08333333.6666667-.16666667.8333333-.58333333.0833334-.41666667-.1666666-.75-.5833333-.91666667-.75-.16666667-1.50000002-.25-2.16666669-.25h-.08333333c-1.25 0-2.16666667.25-2.25.25-.33333334.16666667-.5.58333333-.41666667 1s.5.66666667.91666667.58333333c.16666666 0 .58333333-.16666666 1.08333333-.16666666v.75h-1.58333333c-.91666667-.08333334-1.66666667.66666666-1.66666667 1.58333333l-.25 6.1666667v.0833333c0 1 .75 1.75 1.75 1.75h5.16666669.0833333c1-.0833333 1.75-.9166667 1.6666667-1.8333333zm-6.99999999 3.08333333.08333333-2.41666666c0-.58333334.41666667-1 .91666667-1h3.99999999c.5 0 .8333334.41666666.9166667 1l.0833333 2.41666666c0 .58333337-.3333333.99999997-.8333333.99999997h-.0833333-4.16666672c-.5 0-.91666667-.4166666-.91666667-.99999997zm.58333333 3.74999997c-.41666666 0-.75-.3333333-.75-.75 0-.4166666.33333334-.75.75-.75.41666667 0 .75.25.75.6666667s-.33333333.8333333-.75.8333333zm4.83333336 0c-.4166667 0-.75-.3333333-.75-.75 0-.4166666.3333333-.75.75-.75s.75.3333334.75.75c0 .3333334-.3333333.75-.75.75z" fill="#000"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1 +1 @@
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#000" height="12" opacity=".6" rx="1.875" width="12"/><rect fill="#2f6499" height="11.00025" rx="1.5" width="11.00025" x=".500003" y=".500003"/><path d="m5.99901368 2.00028841.27959242.00206521c.38744508.01070897.71530435.05601616.94321322.09555697l.34033345.06354774c.21527778.10763889.32291667.37673612.26909723.64583333-.04783951.23919754-.26577504.39334706-.50261012.38685034l-.14510611-.01607672-.26690051-.05931123c-.11014942-.02259475-.23865707-.04236516-.37704993-.04236516v.484375h1.02256944c.5525463-.05023148 1.01132716.3683642 1.07004218.90572943l.16780505 4.09947891v.05381944l-.00636265.12691821c-.05893828.58134568-.52106791 1.00329012-1.12384568 1.00329012h-3.34023687c-.60277777 0-1.0649074-.42194444-1.12384568-1.00329012l-.00636265-.12691821v-.05381944l.16145834-3.98263889c0-.59201389.484375-1.07638889 1.07638889-1.02256945h1.02256944v-.484375c-.27678572 0-.51403061.07908163-.64395044.10167639l-.05570234.0059625c-.26909722.05381945-.53819444-.10763889-.59201389-.37673612-.05381944-.26909721.05381945-.53819444.26909723-.64583333l.34033345-.06354774.25973069-.03996795c.19337167-.02593341.42518581-.04844971.68348253-.05558902zm-1.61563943 6.02748937c-.26909722 0-.484375.21527778-.484375.484375s.21527778.484375.484375.484375.484375-.26909722.484375-.53819445c0-.26909721-.21527778-.43055555-.484375-.43055555zm3.23259797 0c-.26909722 0-.484375.16145834-.484375.43055555 0 .26909723.21527778.53819445.484375.53819445s.484375-.21527778.484375-.484375-.21527778-.484375-.484375-.484375zm-.26909722-3.65972222h-2.69440353c-.29356061 0-.54264233.2223944-.58550379.54587716l-.00651009.09995617-.05381946 1.56076389c0 .37673611.26909723.64583334.59201389.64583334h2.80204243c.32291666 0 .59201389-.26909723.59201389-.64583334l-.05381946-1.56076389-.00651009-.09995617c-.04286146-.32348276-.29194318-.54587716-.58550379-.54587716z" fill="#000"/></g></svg>
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#000" height="12" opacity=".6" rx="1.875" width="12"/><rect fill="#2f6499" height="11.00025" rx="1.5" width="11.00025" x=".500003" y=".500003"/><path d="m8.52747147 4.58333334c-.05381944-.64583334-.53819445-1.07638889-1.13020833-1.07638889h-.96875v-.48437501c.21527777 0 .484375.05381945.75347222.10763889.21527778.05381945.43055555-.10763889.53819445-.37673611.05381944-.26909722-.1076389-.484375-.37673612-.59201389-.484375-.10763889-.96874999-.16145833-1.39930555-.16145833h-.05381945c-.80729166 0-1.39930555.16145833-1.45312499.16145833-.21527778.10763889-.32291667.37673612-.26909723.64583333.05381945.26909723.32291667.43055557.59201389.37673612.10763889 0 .37673611-.10763889.69965278-.10763889v.484375h-1.02256944c-.59201389-.05381944-1.07638889.43055556-1.07638889 1.02256945l-.16145834 3.98263889v.05381944c0 .64583333.484375 1.13020833 1.13020833 1.13020833h3.33680556.05381945c.64583333-.05381944 1.13020833-.59201389 1.07638889-1.18402777zm-4.52083334 1.99131944.05381946-1.56076389c0-.37673611.26909721-.64583333.59201388-.64583333h2.58333333c.32291667 0 .53819445.26909722.5920139.64583333l.05381944 1.56076389c0 .37673611-.21527778.64583334-.53819445.64583334h-.05381944-2.69097223c-.32291666 0-.59201389-.26909723-.59201389-.64583334zm.37673612 2.421875c-.26909722 0-.484375-.21527778-.484375-.48437499 0-.26909723.21527778-.48437501.484375-.48437501s.484375.16145834.484375.43055555c0 .26909723-.21527778.53819445-.484375.53819445zm3.12152778 0c-.26909723 0-.484375-.21527778-.484375-.48437499 0-.26909723.21527777-.48437501.484375-.48437501.26909722 0 .48437499.21527778.48437499.48437501 0 .21527777-.21527777.48437499-.48437499.48437499z" fill="#000"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1 +1 @@
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#fff" height="18" opacity=".6" rx="1.875" width="18"/><rect fill="#2f6499" height="16.5" rx="1.5" width="16.5" x=".75" y=".75"/><path d="m6.41350421 14.75c-.95 0-1.674375-.676875-1.7444375-1.6019375l-.0055625-.1480625v-.0833333l.25-6.1666667c0-.91666667.75-1.66666667 1.66666667-1.58333333h1.58333333v-.75c-.5 0-.91666667.16666666-1.08333333.16666666-.41666667.08333334-.83333334-.16666666-.91666667-.58333333s.08333333-.83333333.41666667-1l.11922451-.02060859c.27673179-.05556686.98917837-.2057297 1.91374923-.22689803l.38536266-.00204645-.00000307.26264718.00249272-.26264718.1683364-.00044693c1.24999997 0 2.16666667.25 2.24999997.25.3333334.16666667.5.58333333.4166667 1s-.5.66666667-.9166667.58333333c-.1666666 0-.5833333-.16666666-1.0833333-.16666666v.75h1.5833333c.8708334-.07916667 1.59125.59374999 1.6611146 1.44716666l.2555521 6.30283337v.0833333l-.0055625.1480625c-.0700625.9250625-.7944375 1.6019375-1.7444375 1.6019375zm.08333333-2.6666667c-.41666666 0-.75.3333334-.75.75 0 .4166667.33333334.75.75.75.41666667 0 .75-.4166666.75-.8333333s-.33333333-.6666667-.75-.6666667zm5.00582916 0c-.4166667 0-.75.25-.75.6666667s.3333333.8333333.75.8333333c.4166666 0 .75-.3333333.75-.75 0-.4166666-.3333334-.75-.75-.75zm-4.58916249-5.66666663c-.46428571 0-.85671769.3592687-.9104106.87764213l-.00625607.12235787-.08333333 2.41666666c0 .58333337.41666667.99999997.91666667.99999997h4.33916242c.5 0 .9166667-.4166666.9166667-.99999997l-.0833333-2.41666666-.0062561-.12235787c-.0536929-.51837343-.4461249-.87764213-.9104106-.87764213z" fill="#fff"/></g></svg>
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#fff" height="18" opacity=".6" rx="1.875" width="18"/><rect fill="#2f6499" height="16.5" rx="1.5" width="16.5" x=".75" y=".75"/><path d="m12.9135042 6.75c-.0833333-1-.8333333-1.66666667-1.75-1.66666667h-1.49999999v-.75c.33333333 0 .74999999.08333334 1.16666669.16666667.3333333.08333333.6666667-.16666667.8333333-.58333333.0833334-.41666667-.1666666-.75-.5833333-.91666667-.75-.16666667-1.50000002-.25-2.16666669-.25h-.08333333c-1.25 0-2.16666667.25-2.25.25-.33333334.16666667-.5.58333333-.41666667 1s.5.66666667.91666667.58333333c.16666666 0 .58333333-.16666666 1.08333333-.16666666v.75h-1.58333333c-.91666667-.08333334-1.66666667.66666666-1.66666667 1.58333333l-.25 6.1666667v.0833333c0 1 .75 1.75 1.75 1.75h5.16666669.0833333c1-.0833333 1.75-.9166667 1.6666667-1.8333333zm-6.99999999 3.08333333.08333333-2.41666666c0-.58333334.41666667-1 .91666667-1h3.99999999c.5 0 .8333334.41666666.9166667 1l.0833333 2.41666666c0 .58333337-.3333333.99999997-.8333333.99999997h-.0833333-4.16666672c-.5 0-.91666667-.4166666-.91666667-.99999997zm.58333333 3.74999997c-.41666666 0-.75-.3333333-.75-.75 0-.4166666.33333334-.75.75-.75.41666667 0 .75.25.75.6666667s-.33333333.8333333-.75.8333333zm4.83333336 0c-.4166667 0-.75-.3333333-.75-.75 0-.4166666.3333333-.75.75-.75s.75.3333334.75.75c0 .3333334-.3333333.75-.75.75z" fill="#fff"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1 +1 @@
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#fff" height="12" opacity=".6" rx="1.875" width="12"/><rect fill="#2f6499" height="11.00025" rx="1.5" width="11.00025" x=".500003" y=".500003"/><path d="m5.99901368 2.00028841.27959242.00206521c.38744508.01070897.71530435.05601616.94321322.09555697l.34033345.06354774c.21527778.10763889.32291667.37673612.26909723.64583333-.04783951.23919754-.26577504.39334706-.50261012.38685034l-.14510611-.01607672-.26690051-.05931123c-.11014942-.02259475-.23865707-.04236516-.37704993-.04236516v.484375h1.02256944c.5525463-.05023148 1.01132716.3683642 1.07004218.90572943l.16780505 4.09947891v.05381944l-.00636265.12691821c-.05893828.58134568-.52106791 1.00329012-1.12384568 1.00329012h-3.34023687c-.60277777 0-1.0649074-.42194444-1.12384568-1.00329012l-.00636265-.12691821v-.05381944l.16145834-3.98263889c0-.59201389.484375-1.07638889 1.07638889-1.02256945h1.02256944v-.484375c-.27678572 0-.51403061.07908163-.64395044.10167639l-.05570234.0059625c-.26909722.05381945-.53819444-.10763889-.59201389-.37673612-.05381944-.26909721.05381945-.53819444.26909723-.64583333l.34033345-.06354774.25973069-.03996795c.19337167-.02593341.42518581-.04844971.68348253-.05558902zm-1.61563943 6.02748937c-.26909722 0-.484375.21527778-.484375.484375s.21527778.484375.484375.484375.484375-.26909722.484375-.53819445c0-.26909721-.21527778-.43055555-.484375-.43055555zm3.23259797 0c-.26909722 0-.484375.16145834-.484375.43055555 0 .26909723.21527778.53819445.484375.53819445s.484375-.21527778.484375-.484375-.21527778-.484375-.484375-.484375zm-.26909722-3.65972222h-2.69440353c-.29356061 0-.54264233.2223944-.58550379.54587716l-.00651009.09995617-.05381946 1.56076389c0 .37673611.26909723.64583334.59201389.64583334h2.80204243c.32291666 0 .59201389-.26909723.59201389-.64583334l-.05381946-1.56076389-.00651009-.09995617c-.04286146-.32348276-.29194318-.54587716-.58550379-.54587716z" fill="#fff"/></g></svg>
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><g fill="none"><rect fill="#fff" height="12" opacity=".6" rx="1.875" width="12"/><rect fill="#2f6499" height="11.00025" rx="1.5" width="11.00025" x=".500003" y=".500003"/><path d="m8.52747147 4.58333334c-.05381944-.64583334-.53819445-1.07638889-1.13020833-1.07638889h-.96875v-.48437501c.21527777 0 .484375.05381945.75347222.10763889.21527778.05381945.43055555-.10763889.53819445-.37673611.05381944-.26909722-.1076389-.484375-.37673612-.59201389-.484375-.10763889-.96874999-.16145833-1.39930555-.16145833h-.05381945c-.80729166 0-1.39930555.16145833-1.45312499.16145833-.21527778.10763889-.32291667.37673612-.26909723.64583333.05381945.26909723.32291667.43055557.59201389.37673612.10763889 0 .37673611-.10763889.69965278-.10763889v.484375h-1.02256944c-.59201389-.05381944-1.07638889.43055556-1.07638889 1.02256945l-.16145834 3.98263889v.05381944c0 .64583333.484375 1.13020833 1.13020833 1.13020833h3.33680556.05381945c.64583333-.05381944 1.13020833-.59201389 1.07638889-1.18402777zm-4.52083334 1.99131944.05381946-1.56076389c0-.37673611.26909721-.64583333.59201388-.64583333h2.58333333c.32291667 0 .53819445.26909722.5920139.64583333l.05381944 1.56076389c0 .37673611-.21527778.64583334-.53819445.64583334h-.05381944-2.69097223c-.32291666 0-.59201389-.26909723-.59201389-.64583334zm.37673612 2.421875c-.26909722 0-.484375-.21527778-.484375-.48437499 0-.26909723.21527778-.48437501.484375-.48437501s.484375.16145834.484375.43055555c0 .26909723-.21527778.53819445-.484375.53819445zm3.12152778 0c-.26909723 0-.484375-.21527778-.484375-.48437499 0-.26909723.21527777-.48437501.484375-.48437501.26909722 0 .48437499.21527778.48437499.48437501 0 .21527777-.21527777.48437499-.48437499.48437499z" fill="#fff"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,150 +0,0 @@
# Eclipse
As mentioned in [Building](INSTALL.md), there are several IDEs which can be used for CoMaps development. With the refactoring of the code that happened in August 2025, Eclipse finally can be used to work with the CoMaps C++ and Java codebase. (Code in other languages is untested.)
Eclipse natively supports Java, thus it can be used to edit the entire Android codebase. However, although Eclipse was once the tool for Android development, the Android plug-ins (ADT and its fork, Andmore) are no longer being actively developed. Therefore, although you can edit Java code for Android in Eclipse, you will get warnings about missing Android-specific dependencies. Building and debugging the Android app is not possible (or will require a lot of tinkering to get it to work).
## Prerequisites
You need Eclipse with CDT (C/C++ developer tools).
## Import the code
**Do not** import the entire source directory the code indexer will choke on `3party`. Instead, import the following directories as individual projects:
* `libs` this should be the first dir to import
* `qt` if you want to work on the desktop app
* `tools` if you want to work on tools which are not part of the main app
If you want to work on the Android app from within Eclipse, you can also import `android`. We dont have instructions for that yet (feel free to contribute yours) but have been able to import that portion of the code into Eclipse. There are three main caveats:
* You need to import C++ and Java code separately
* In Java, Eclipse may not be able to find Android-specific dependencies which are not part of the standard Java API
* The code has been refactored since this was last tried successfully; Android code has been split into an app and an SDK portion; you may need to import each of these separately
## Import code dirs
Repeat these steps for each subdir you want to work with (`libs`, `qt`, `android`, tools` etc.).
From the menu, choose **File > Import**.
In the dialog that opens, select **C/C++ > Existing Code as Makefile Project** and click **Next**.
In the next dialog:
* Set the **Project Name** (we recommend using the name of the subdir)
* Set the path for the **Existing Code Location** (a subdir of the CoMaps code dir, such as `libs`, `qt` or `tools`)
* Ensure both C and C++ are selected under **Languages**
* Under **Toolchain for Indexer Settings**, select **CMake driven**.
* Click **Finish**.
After you have imported the code and open the first source files, Eclipse will flag lots of errors in the code, as it cannot find any of the included header files outside the project. We will rectify that in the next steps.
## Header files in project root
Some header files are located in the root dir of the source tree. You to import them into a location where Eclipse can find them.
Right-click the `libs` project and choose **Import** from the context menu.
In the dialog that opens, select **General > File System** and click **Next**.
In the **File System** dialog:
* In **From Directory**, enter (or browse to) the root dir of the CoMaps sources.
* In the list of files below, check all header files (at the time of this writing, `defines.hpp`, `omim_config.h`, `precompiled_headers.hpp` and `private.h`).
* Under **Options**, click **Advanced**.
* Check **Create links in workspace**.
* Click **Finish**.
The header files will now appear at the root of `libs`. These are links that point to the files in their original location.
Should any additional header files ever get added to the root dir, you will have to repeat this step.
## Dependencies
Right-click the project root in Package Explorer and select **Properties** from the context menu.
In the dialog that opens, select **C/C++ General > Paths and Symbols** from the tree on the left.
Click the **Includes** tab and add the following paths:
* The standard include paths of your system (these can be obtained by running `echo | g++ -v -x c++ -E -` and looking for the line which reads `#include <...> search starts here:`)
* The following subdirs of `3party` (in the CoMaps source dir):
* `boost`
* `pugixml/pugixml/src`
* For other dependencies, figure out where the header files are and how they are included for example, if one of the source files includes `<foo/foo_base.hpp>` and you find the file in `3party/libfoo/headers/foo/foo_base.hpp`, include `3party/libfo/headers`
* Qt6 headers on Ubuntu 24.04, they are found in `/usr/include/x86_64-linux-gnu/qt6`. (Only for needed for `qt`; also for `tools` if youre working on GUI tools.) You will also need at least the following subdirs:
* `QtCore`
* `QtGui`
* `QtOpenGL`
* `QtOpenGLWidgets`
* `QtWidgets`
* This list may be incomplete if you spot anything missing and know how to add it, please add it here
On the **References** tab, check `libs` (except in the `libs` project itself, where this is not available and not needed).
## Building
> [!NOTE]
> So far, we havent found a way to configure our toolchain as a builder in Eclipse (which would allow us to have Eclipse build the artifact as needed before running it) if you know how to do this, your input is appreciated. Until then, the workaround is to configure the build command as an external tool. The build command must then be launched manually after making changes to the code. After that you can launch the build artifact using Run.
Build and run configurations are relative to a project. Since the code is spread across multiple projects, the recommendation is to configure the build for the project where the frontend resides `qt` for the desktop app, `tools` for any tools.
### Configure the build command as an external command
From the menu, choose **Run > External Tools > External Tools Configurations...***
Right-click **Program** in the left pane and select **New configuration**. (One blank configuration may already have been created, which you can adapt to your needs.)
* Set a name for the external command (e.g. `Build`, followed by the artifact name and release or debug)
* On the **Main** tab:
* **Location**: `${workspace_loc:/tools/unix/build_omim.sh}`
* **Working Directory**: `${workspace_loc:/qt}/..` or `${workspace_loc:/tools}/..`
* **Arguments**: arguments to the build script (e.g. `-r desktop` for a desktop release build)
* On the **Refresh** tab, uncheck **Refresh resources upon completion**.
* On the **Build** tab, uncheck **Build before launch**.
### Configure a builder
> [!WARNING]
> **This currently does not work, see above.**
> * The prebuilt binary gets launched but no build happens, not even after changes.
> * When explicitly starting a build, it fails with an error.
> * Changes to the build config do not seem to take effect.
> The steps here are for reference only; any input on getting this to work is welcome.
Right-click the project root in Package Explorer and select **Properties** from the context menu.
In the dialog that opens, select **C/C++ Build** from the tree on the left.
* Click **Manage Configurations** and create a new build configuration.
* Make sure the new configuration is selected in the **Configuration** drop-down list.
* On the **Builder Settings** tab:
* Uncheck **Use default build command** and set the build command to `./tools/unix/build_omim.sh`.
* Set the build directory to `${workspace_loc:/qt}/..` or `${workspace_loc:/tools}/..`.
* On the **Behavior** tab:
* Select **Use custom build arguments** and supply the arguments to the build script (e.g. `-r desktop` for a desktop release build).
* Uncheck **Build (Incremental build)** and **Clean**
### Create a run configuration
To run the artifact, choose **Run > Run Configurations...** from the menu. In the dialog that opens, right-click **C/C++ Application** in the pane on the left and choose **New Configuration**. Make the following settings:
* In the **Main** tab:
* **Project**: one of the projects in the workspace, see recommendation above
* **C/C++ Application**: path where the build artifact (the finished binary) resides
* **Build Configuration**: choose the appropriate build configuration (see above)
* In the **Arguments** tab, you can choose the working directory from which to launch the binary, and specify command line arguments.
* In the **Environment** tab, you can set environment variables if you need this for your artifact.
### Building with CMake
The recommended toolchain is `build_omim.sh`. If nonetheless you need to build with CMake for some reason:
* Specify `cmake` (with full path, as returned by `which cmake`) as the build command in the build configuration
* Use the same build directory as you would for `build_omim.sh`, i.e. `${workspace_loc:/qt}/..` or `${workspace_loc:/tools}/..`.
* Specify the build arguments for CMake. This would also include the `--build` dir. You will also need `--target` to specify the build target.
### Building for Android
Although we have not tested it yet, triggering an Android build from within Eclipse should be possible in the same way if you specify the `gradlew` script as the build tool. This should be pretty straightforward with the external tool workaround described above.
Installing, launching and debugging the Android app from Eclipse might be more difficult or not even possible, as there is no longer an actively maintained toolchain for Android development with Eclipse.

View File

@@ -41,9 +41,6 @@ NS_SWIFT_NAME(SettingsBridge)
+ (NSString *)mapLanguageCode;
+ (void)setMapLanguageCode:(NSString *)mapLanguageCode;
+ (BOOL)mapLanguageLimitAlternativesToLocal;
+ (void)setMapLanguageLimitAlternativesToLocal:(BOOL)mapLanguageLimitAlternativesToLocal;
+ (BOOL)transliteration;
+ (void)setTransliteration:(BOOL)transliteration;

View File

@@ -234,20 +234,6 @@ NSString * const kUDFileLoggingEnabledKey = @"FileLoggingEnabledKey";
}
}
+ (BOOL)mapLanguageLimitAlternativesToLocal
{
bool enabled = true;
UNUSED_VALUE(settings::Get(settings::kMapLanguageLimitAlternativesToLocal, enabled));
return enabled;
}
+ (void)setMapLanguageLimitAlternativesToLocal:(BOOL)mapLanguageLimitAlternativesToLocal
{
settings::Set(settings::kMapLanguageLimitAlternativesToLocal, static_cast<bool>(mapLanguageLimitAlternativesToLocal));
auto & f = GetFramework();
f.InvalidateRect(f.GetCurrentViewport());
}
+ (BOOL)transliteration { return GetFramework().LoadTransliteration(); }
+ (void)setTransliteration:(BOOL)transliteration
{

View File

@@ -1095,7 +1095,6 @@
"edit_track" = "Track bearbeiten";
"pref_mapappearance_title" = "Kartendarstellung";
"pref_maplanguage_title" = "Karten-Sprache";
"limit_map_language_alternatives_to_local" = "Nutzung alternativer Sprachen auf lokale Sprachen begrenzen";
"transliteration_title_disabled_summary" = "Bei der Nutzung der lokalen Sprache für die Karte ausgeschaltet";
"pref_maplanguage_local" = "Lokale Sprache";
"existence_confirmed_time_ago" = "Existenz bestätigt %@";

View File

@@ -766,7 +766,6 @@
"traffic_data_unavailable" = "Traffic data is not available";
"enable_logging" = "Enable logging";
"log_file_size" = "Log file size: %@";
"limit_map_language_alternatives_to_local" = "Limit use of alternative languages to local ones";
"transliteration_title" = "Transliterate into Latin alphabet";
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";

View File

@@ -786,7 +786,6 @@
"traffic_data_unavailable" = "Traffic data is not available";
"enable_logging" = "Enable logging";
"log_file_size" = "Log file size: %@";
"limit_map_language_alternatives_to_local" = "Limit use of alternative languages to local ones";
"transliteration_title" = "Transliterate into Latin alphabet";
"transliteration_title_disabled_summary" = "Disabled when always using the local language for the map";

View File

@@ -12,7 +12,6 @@
165953942CB44B5600CFED7C /* symbols in Resources */ = {isa = PBXBuildFile; fileRef = 165953932CB44B3B00CFED7C /* symbols */; };
1DFA2F6A20D3B57400FB2C66 /* UIColor+PartnerColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DFA2F6920D3B57400FB2C66 /* UIColor+PartnerColor.m */; };
270C9C282E16AB6F00ABA688 /* Profile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 270C9C252E16AB6300ABA688 /* Profile.swift */; };
271186872F19467400FD7FF3 /* countries_meta.txt in Resources */ = {isa = PBXBuildFile; fileRef = 271186862F19467400FD7FF3 /* countries_meta.txt */; };
27176A862E65B0150015F25F /* Icon.icon in Resources */ = {isa = PBXBuildFile; fileRef = 27176A852E65B0150015F25F /* Icon.icon */; };
27176A8A2E65B01B0015F25F /* Debug Icon.icon in Resources */ = {isa = PBXBuildFile; fileRef = 27176A892E65B01B0015F25F /* Debug Icon.icon */; };
272CA4492F127221005A3F5B /* subtypes.csv in Resources */ = {isa = PBXBuildFile; fileRef = 272CA4482F127221005A3F5B /* subtypes.csv */; };
@@ -764,7 +763,6 @@
1DFA2F6920D3B57400FB2C66 /* UIColor+PartnerColor.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = "UIColor+PartnerColor.m"; sourceTree = "<group>"; tabWidth = 2; };
1DFA2F6E20D3CA9200FB2C66 /* UIColorRoutines.h */ = {isa = PBXFileReference; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = UIColorRoutines.h; sourceTree = "<group>"; tabWidth = 2; };
270C9C252E16AB6300ABA688 /* Profile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Profile.swift; sourceTree = "<group>"; };
271186862F19467400FD7FF3 /* countries_meta.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = countries_meta.txt; path = ../../data/countries_meta.txt; sourceTree = SOURCE_ROOT; };
27176A852E65B0150015F25F /* Icon.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = Icon.icon; sourceTree = "<group>"; };
27176A892E65B01B0015F25F /* Debug Icon.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = "Debug Icon.icon"; sourceTree = "<group>"; };
272CA4482F127221005A3F5B /* subtypes.csv */ = {isa = PBXFileReference; lastKnownFileType = text; name = subtypes.csv; path = ../../data/subtypes.csv; sourceTree = SOURCE_ROOT; };
@@ -3943,7 +3941,6 @@
452FCA3A1B6A3DF7007019AB /* colors.txt */,
97A5967E19B9CD47007A963F /* copyright.html */,
FA46DA2B12D4166E00968C36 /* countries.txt */,
271186862F19467400FD7FF3 /* countries_meta.txt */,
4A23D1561B8B4DD700D4EB6F /* drules_proto_default_light.bin */,
4A00DBDE1AB704C400113624 /* drules_proto_default_dark.bin */,
FA637ECC29A500BE00D8921A /* drules_proto_outdoors_light.bin */,
@@ -4182,7 +4179,6 @@
files = (
165953742CB1D85500CFED7C /* fonts in Resources */,
165953942CB44B5600CFED7C /* symbols in Resources */,
271186872F19467400FD7FF3 /* countries_meta.txt in Resources */,
47AEF8402231249E00D20538 /* categories_brands.txt in Resources */,
F6C3A1B221AC22810060EEC8 /* Alert 5.m4a in Resources */,
3404F49A2028A20D0090E401 /* BMCCategoryCell.xib in Resources */,

View File

@@ -167,17 +167,6 @@ import AVFoundation
}
/// If the alternative languages for the app only should be used when they are the local native language
static var shouldLimitMapLanguageAlternativesToLocal: Bool {
get {
return SettingsBridge.mapLanguageLimitAlternativesToLocal()
}
set {
SettingsBridge.setMapLanguageLimitAlternativesToLocal(newValue)
}
}
/// If the compass should be calibrated
@objc static var shouldCalibrateCompass: Bool {
get {

View File

@@ -36,10 +36,6 @@ struct SettingsView: View {
@State var selectedLanguageForMap: Settings.MapLanguage.ID? = nil
/// If the alternative languages for the app only should be used when they are the local native language
@State private var shouldLimitMapLanguageAlternativesToLocal: Bool = true
/// If names should be transliterated to Latin
@State private var shouldTransliterateToLatin: Bool = true
@@ -157,20 +153,6 @@ struct SettingsView: View {
Text("pref_maplanguage_title")
}
Toggle(isOn: $shouldLimitMapLanguageAlternativesToLocal) {
VStack(alignment: .leading) {
Text("limit_map_language_alternatives_to_local")
if selectedLanguageForMap == "default" {
Text("transliteration_title_disabled_summary")
.font(.footnote)
.foregroundStyle(.secondary)
}
}
}
.tint(.accent)
.disabled(selectedLanguageForMap == "default")
Toggle(isOn: $shouldTransliterateToLatin) {
VStack(alignment: .leading) {
Text("transliteration_title")
@@ -314,7 +296,6 @@ struct SettingsView: View {
hasAutomaticDownload = Settings.hasAutomaticDownload
hasIncreasedFontsize = Settings.hasIncreasedFontsize
selectedLanguageForMap = Settings.languageForMap
shouldLimitMapLanguageAlternativesToLocal = Settings.shouldLimitMapLanguageAlternativesToLocal
shouldTransliterateToLatin = Settings.shouldTransliterateToLatin
selectedMapAppearance = Settings.mapAppearance
selectedAppearance = Settings.appearance
@@ -347,9 +328,6 @@ struct SettingsView: View {
Settings.languageForMap = changedSelectedLanguageForMap
}
}
.onChange(of: shouldLimitMapLanguageAlternativesToLocal) { changedShouldLimitMapLanguageAlternativesToLocal in
Settings.shouldLimitMapLanguageAlternativesToLocal = changedShouldLimitMapLanguageAlternativesToLocal
}
.onChange(of: shouldTransliterateToLatin) { changedShouldTransliterateToLatin in
Settings.shouldTransliterateToLatin = changedShouldTransliterateToLatin
}

View File

@@ -72,8 +72,6 @@ set(SRC
feature_impl.hpp
feature_meta.cpp
feature_meta.hpp
feature_region_locator.cpp
feature_region_locator.hpp
feature_processor.hpp
feature_source.cpp
feature_source.hpp

View File

@@ -3,7 +3,6 @@
#include "indexer/classificator.hpp"
#include "indexer/feature_algo.hpp"
#include "indexer/feature_impl.hpp"
#include "indexer/feature_region_locator.hpp"
#include "indexer/feature_utils.hpp"
#include "indexer/map_object.hpp"
#include "indexer/shared_load_info.hpp"
@@ -826,16 +825,7 @@ void FeatureType::GetReadableName(bool allowTranslit, int8_t deviceLang, feature
ParseCommon();
auto regionData = mwmInfo->GetRegionData();
if (regionData.IsWorldLevel())
{
if (GetGeomType() == feature::GeomType::Point)
regionData.SetLanguages(RegionLocator::Instance().GetLocalLanguages(GetCenter()));
else
regionData.SetLanguages({"int_name", "en", "default"});
}
feature::GetReadableName({GetNames(), regionData, deviceLang, allowTranslit}, out);
feature::GetReadableName({GetNames(), mwmInfo->GetRegionData(), deviceLang, allowTranslit}, out);
}
string const & FeatureType::GetHouseNumber()

View File

@@ -216,11 +216,6 @@ void Metadata::ClearPOIAttribs()
++i;
}
bool RegionData::IsWorldLevel() const
{
return Get(RegionData::Type::RD_LANGUAGES).empty();
}
void RegionData::SetLanguages(vector<string> const & codes)
{
string value;

View File

@@ -224,7 +224,6 @@ public:
MetadataBase::Set(type, s);
}
bool IsWorldLevel() const;
void SetLanguages(std::vector<std::string> const & codes);
void GetLanguages(std::vector<int8_t> & langs) const;
bool HasLanguage(int8_t const lang) const;

View File

@@ -1,26 +0,0 @@
#include "indexer/feature_region_locator.hpp"
#include "defines.hpp"
#include "platform/platform.hpp"
namespace feature
{
/// Constructor
RegionLocator::RegionLocator()
{
auto & platform = GetPlatform();
m_infoGetter = storage::CountryInfoReader::CreateCountryInfoGetter(platform);
auto reader = platform.GetReader(COUNTRIES_META_FILE);
string buffer;
reader->ReadAsString(buffer);
m_jsonRoot = base::Json(buffer.data());
}
/// Static instance
RegionLocator const & RegionLocator::Instance()
{
static RegionLocator instance;
return instance;
}
} // namespace feature

View File

@@ -1,56 +0,0 @@
#pragma once
#include "coding/reader.hpp"
#include "cppjansson/cppjansson.hpp"
#include "storage/storage.hpp"
#include "storage/country_info_getter.hpp"
#include <vector>
namespace feature
{
using namespace std;
class RegionLocator
{
public:
/// Static instance
static RegionLocator const & Instance();
/**
* Find the local languages codes for a given point
* @param point The point to check
* @return The local language codes
*/
vector<string> GetLocalLanguages(m2::PointD const point) const
{
auto const regionId = m_infoGetter->GetRegionCountryId(point);
vector<string> regionIdParts;
for (auto const regionIdPart : strings::Tokenize(regionId, "_")) {
regionIdParts.push_back(string(regionIdPart));
}
json_t const * jsonData = nullptr;
vector<string> languages;
while (languages.empty() && !regionIdParts.empty()) {
string regionId = strings::JoinStrings(regionIdParts, "_");
FromJSONObjectOptionalField(m_jsonRoot.get(), regionId, jsonData);
if (jsonData)
FromJSONObjectOptionalField(jsonData, "languages", languages);
regionIdParts.pop_back();
}
return languages;
}
private:
/// Constructor
RegionLocator();
/// Country info getter
unique_ptr<storage::CountryInfoGetter> m_infoGetter;
/// JSON root
base::Json m_jsonRoot;
};
} // namespace feature

View File

@@ -9,7 +9,6 @@
#include "platform/distance.hpp"
#include "platform/localization.hpp"
#include "platform/preferred_languages.hpp"
#include "platform/settings.hpp"
#include "coding/string_utf8_multilang.hpp"
#include "coding/transliteration.hpp"
@@ -118,7 +117,7 @@ bool IsNativeLang(feature::RegionData const & regionData, int8_t deviceLang)
return false;
}
int8_t DefaultLanguageFromRegionData(feature::RegionData const & regionData, vector<int8_t> const & langs)
int8_t DefaultLanguage(feature::RegionData const & regionData, vector<int8_t> const & langs)
{
for (auto const lang : langs)
{
@@ -133,39 +132,18 @@ int8_t DefaultLanguageFromRegionData(feature::RegionData const & regionData, vec
return StrUtf8::kDefaultCode;
}
vector<int8_t> PrioritizedLanguages(optional<feature::RegionData> const & regionData = {})
vector<int8_t> PrioritizedLanguages(vector<int8_t> const & langs, int8_t defaultLang)
{
bool limitAlternativesToLocal = true;
UNUSED_VALUE(settings::Get(settings::kMapLanguageLimitAlternativesToLocal, limitAlternativesToLocal));
vector<int8_t> prioritizedLangs = {};
vector<int8_t> const langs = languages::GetPreferredLangIndexes();
int8_t defaultLang = StrUtf8::kUnsupportedLanguageCode;
if (regionData.has_value())
defaultLang = DefaultLanguageFromRegionData(regionData.value(), langs);
for (auto const lang : langs)
{
if (!limitAlternativesToLocal &&
find(prioritizedLangs.begin(), prioritizedLangs.end(), lang) == prioritizedLangs.end())
if (find(prioritizedLangs.begin(), prioritizedLangs.end(), lang) == prioritizedLangs.end())
prioritizedLangs.push_back(lang);
if (defaultLang != StrUtf8::kUnsupportedLanguageCode && defaultLang == lang)
prioritizedLangs.push_back(StrUtf8::kDefaultCode);
if (!limitAlternativesToLocal)
{
auto const similarLangs = GetSimilarLanguages(lang);
prioritizedLangs.insert(prioritizedLangs.cend(), similarLangs.cbegin(), similarLangs.cend());
}
}
if (limitAlternativesToLocal)
{
auto lang = langs.front();
prioritizedLangs.push_back(lang);
auto const similarLangs = GetSimilarLanguages(lang);
prioritizedLangs.insert(prioritizedLangs.cend(), similarLangs.cbegin(), similarLangs.cend());
}
@@ -179,7 +157,8 @@ vector<int8_t> PrioritizedLanguages(optional<feature::RegionData> const & region
void GetReadableNameImpl(NameParamsIn const & in, bool preferDefault, NameParamsOut & out)
{
auto const langPriority = PrioritizedLanguages(in.regionData);
auto const preferredLangs = languages::GetPreferredLangIndexes();
auto const langPriority = PrioritizedLanguages(preferredLangs, DefaultLanguage(in.regionData, preferredLangs));
if (GetBestName(in.src, langPriority, out.primary))
return;
@@ -382,7 +361,8 @@ void GetPreferredNames(NameParamsIn const & in, NameParamsOut & out)
if (in.IsNativeOrSimilarLang())
return GetReadableNameImpl(in, true /* preferDefault */, out);
auto const primaryCodes = PrioritizedLanguages(in.regionData);
auto const preferredLangs = languages::GetPreferredLangIndexes();
auto const primaryCodes = PrioritizedLanguages(preferredLangs, DefaultLanguage(in.regionData, preferredLangs));
if (!GetBestName(in.src, primaryCodes, out.primary) && in.allowTranslit)
GetTransliteratedName(in.regionData, in.src, out.transliterated);
@@ -447,14 +427,17 @@ int8_t GetNameForSearchOnBooking(RegionData const & regionData, StringUtf8Multil
}
*/
bool GetPreferredName(StringUtf8Multilang const & src, string_view & out)
bool GetPreferredName(StringUtf8Multilang const & src, int8_t deviceLang, string_view & out)
{
return GetBestName(src, PrioritizedLanguages(), out);
auto const preferredLangs = languages::GetPreferredLangIndexes();
auto const priorityList = PrioritizedLanguages(preferredLangs, StrUtf8::kUnsupportedLanguageCode);
return GetBestName(src, priorityList, out);
}
vector<int8_t> GetDescriptionLangPriority(RegionData const & regionData)
{
return PrioritizedLanguages(regionData);
auto const preferredLangs = languages::GetPreferredLangIndexes();
return PrioritizedLanguages(preferredLangs, DefaultLanguage(regionData, preferredLangs));
}
vector<string> GetCuisines(TypesHolder const & types)

View File

@@ -137,7 +137,7 @@ std::string const GetReadableAddress(std::string const & address);
// int8_t GetNameForSearchOnBooking(RegionData const & regionData, StringUtf8Multilang const & src, std::string & name);
/// Returns preferred name when only the device language is available.
bool GetPreferredName(StringUtf8Multilang const & src, std::string_view & out);
bool GetPreferredName(StringUtf8Multilang const & src, int8_t deviceLang, std::string_view & out);
/// Returns priority list of language codes for feature description,
/// the priority is the following:

View File

@@ -81,12 +81,10 @@ public:
MwmTypeT GetType() const;
// Switch to following simplified code after this pull request has been included in one release:
// feature::RegionData GetRegionData() const { return m_data; }
feature::RegionData GetRegionData() const {
auto regionData = m_data;
if (GetType() == MwmTypeT::WORLD || GetType() == MwmTypeT::COASTS) {
regionData.SetLanguages({});
regionData.SetLanguages({"int_name","en","default"});
}
return regionData;
}

View File

@@ -31,8 +31,10 @@ std::string GetPreferredBookmarkStr(LocalizableString const & name, std::string
for (auto const & pair : name)
nameMultilang.AddString(pair.first, pair.second);
auto const deviceLang = StringUtf8Multilang::GetLangIndex(languageNorm);
std::string_view preferredName;
if (feature::GetPreferredName(nameMultilang, preferredName))
if (feature::GetPreferredName(nameMultilang, deviceLang, preferredName))
return std::string(preferredName);
return {};

View File

@@ -22,7 +22,6 @@ using std::string;
std::string_view kMeasurementUnits = "Units";
std::string_view kMapLanguageCode = "MapLanguageCode";
std::string_view kMapLanguageLimitAlternativesToLocal = "MapLanguageLimitAlternativesToLocal";
std::string_view kDeveloperMode = "DeveloperMode";
std::string_view kDonateUrl = "DonateUrl";
std::string_view kNY = "NY";

View File

@@ -12,7 +12,6 @@ namespace settings
extern std::string_view kMeasurementUnits;
extern std::string_view kDeveloperMode;
extern std::string_view kMapLanguageCode;
extern std::string_view kMapLanguageLimitAlternativesToLocal;
// The following two settings are configured externally at the metaserver.
extern std::string_view kDonateUrl;
extern std::string_view kNY;

View File

@@ -115,7 +115,6 @@ copy_resources(
colors.txt
copyright.html
countries.txt
countries_meta.txt
drules_proto_default_light.bin
drules_proto_default_dark.bin
drules_proto_outdoors_light.bin

View File

@@ -20,7 +20,7 @@ MAIN_OUT_PATH: /mnt/4tbexternal/osm-maps
# Path to the data/ folder in the repository:
USER_RESOURCE_PATH: ${Developer:OMIM_PATH}/data
# Features stage only parallelism level. Set to 0 for auto detection.
THREADS_COUNT_FEATURES_STAGE: 52
THREADS_COUNT_FEATURES_STAGE: 0
# Do not change it. This is determined automatically.
NODE_STORAGE: mem
@@ -99,7 +99,7 @@ DIFF_VERSION_DEPTH: 2
[Common]
# Default parallelism level for the most of jobs. Set to 0 for auto detection.
THREADS_COUNT: 48
THREADS_COUNT: 0
[Stats]

View File

@@ -7,8 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
2711868B2F194FF000FD7FF3 /* feature_region_locator.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2711868A2F194FCF00FD7FF3 /* feature_region_locator.hpp */; };
2711868D2F194FF600FD7FF3 /* feature_region_locator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2711868C2F194FF400FD7FF3 /* feature_region_locator.cpp */; };
272CA4462F126795005A3F5B /* ftypes_subtypes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 272CA4442F126795005A3F5B /* ftypes_subtypes.hpp */; };
272CA4472F126795005A3F5B /* ftypes_subtypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 272CA4452F126795005A3F5B /* ftypes_subtypes.cpp */; };
272CA44D2F12723B005A3F5B /* subtypes.csv in Resources */ = {isa = PBXBuildFile; fileRef = 272CA44C2F12723B005A3F5B /* subtypes.csv */; };
@@ -235,8 +233,6 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
2711868A2F194FCF00FD7FF3 /* feature_region_locator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = feature_region_locator.hpp; sourceTree = "<group>"; };
2711868C2F194FF400FD7FF3 /* feature_region_locator.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = feature_region_locator.cpp; sourceTree = "<group>"; };
272CA4442F126795005A3F5B /* ftypes_subtypes.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ftypes_subtypes.hpp; sourceTree = "<group>"; };
272CA4452F126795005A3F5B /* ftypes_subtypes.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ftypes_subtypes.cpp; sourceTree = "<group>"; };
272CA44C2F12723B005A3F5B /* subtypes.csv */ = {isa = PBXFileReference; lastKnownFileType = text; name = subtypes.csv; path = ../../data/subtypes.csv; sourceTree = "<group>"; };
@@ -681,8 +677,6 @@
675340C71A3F540F00A0A8C3 /* feature_impl.hpp */,
6726C1CF1A49DAAC005EEA39 /* feature_meta.cpp */,
6726C1D01A49DAAC005EEA39 /* feature_meta.hpp */,
2711868C2F194FF400FD7FF3 /* feature_region_locator.cpp */,
2711868A2F194FCF00FD7FF3 /* feature_region_locator.hpp */,
675340CC1A3F540F00A0A8C3 /* feature_processor.hpp */,
675B562120D25C9800A521D2 /* feature_source.cpp */,
675B562220D25C9800A521D2 /* feature_source.hpp */,
@@ -800,7 +794,6 @@
6753414C1A3F540F00A0A8C3 /* tree_structure.hpp in Headers */,
F6DF5F311CD0FD9A00A87154 /* categories_index.hpp in Headers */,
40662D32236059BF006A124D /* tree_node.hpp in Headers */,
2711868B2F194FF000FD7FF3 /* feature_region_locator.hpp in Headers */,
347F337D1C454242009758CC /* succinct_trie_builder.hpp in Headers */,
675341381A3F540F00A0A8C3 /* mwm_set.hpp in Headers */,
456E1B181F90E5B7009C32E1 /* cities_boundaries_serdes.hpp in Headers */,
@@ -952,7 +945,7 @@
3496ABA31DC1FA7200C5DDBA /* editor.config in Resources */,
3496AB9D1DC1FA5200C5DDBA /* drules_proto_clear.bin in Resources */,
3496AB9E1DC1FA5200C5DDBA /* drules_proto_dark.bin in Resources */,
272CA44D2F12723B005A3F5B /* subtypes.csv in Resources */,
272CA44D2F12723B005A3F5B /* subtypes.csv in Resources */,
FA67C84F26BB36D700B33DCA /* categories_brands.txt in Resources */,
FA67C84626BB356800B33DCA /* categories_cuisines.txt in Resources */,
3496ABA11DC1FA5200C5DDBA /* drules_proto.bin in Resources */,
@@ -1048,7 +1041,6 @@
272CA4472F126795005A3F5B /* ftypes_subtypes.cpp in Sources */,
BBB7060F23E46E0100A7F29A /* isolines_info.cpp in Sources */,
408FE47724FEB95600F5D06D /* metadata_serdes.cpp in Sources */,
2711868D2F194FF600FD7FF3 /* feature_region_locator.cpp in Sources */,
34583BCB1C88552100F94664 /* map_object.cpp in Sources */,
675B562320D25C9800A521D2 /* feature_source.cpp in Sources */,
6753412E1A3F540F00A0A8C3 /* index_builder.cpp in Sources */,