Compare commits

..

1 Commits

Author SHA1 Message Date
Konstantin Pastbin
1fe3526bf4 [fdroid] Release version 2025.06.30-22
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-07-01 01:22:02 +07:00
7820 changed files with 1162671 additions and 303151 deletions

View File

@@ -1,61 +1,48 @@
# Configuration file for clang-format, based on docs/CPP_STYLE.md. # Configuration file for clang-format, based on docs/CPP_STYLE.md.
---
BasedOnStyle: Google BasedOnStyle: Google
AccessModifierOffset: -2 AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
AlignEscapedNewlines: LeftWithLastLine
AlignOperands: AlignAfterOperator AlignOperands: AlignAfterOperator
AllowShortBlocksOnASingleLine: Empty AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false AllowShortLoopsOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: true
BraceWrapping: BraceWrapping:
AfterCaseLabel: true AfterCaseLabel: true
AfterClass: true AfterClass: true
AfterControlStatement: Always AfterControlStatement: Always
AfterEnum: true AfterEnum: true
AfterExternBlock: true
AfterFunction: true AfterFunction: true
AfterNamespace: true AfterNamespace: true
AfterObjCDeclaration: true AfterObjCDeclaration: true
AfterStruct: true AfterStruct: true
AfterUnion: true AfterUnion: true
AfterExternBlock: true
BeforeCatch: true BeforeCatch: true
BeforeElse: true BeforeElse: true
BeforeLambdaBody: true BeforeLambdaBody: true
BeforeWhile: true BeforeWhile: true
IndentBraces: false
SplitEmptyFunction: false SplitEmptyFunction: false
SplitEmptyNamespace: false
SplitEmptyRecord: false SplitEmptyRecord: false
BinPackArguments: true SplitEmptyNamespace: false
BinPackParameters: true
BreakAfterJavaFieldAnnotations: true
BreakBeforeBraces: Custom BreakBeforeBraces: Custom
BreakConstructorInitializers: BeforeComma BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma BreakInheritanceList: BeforeComma
ColumnLimit: 120 ColumnLimit: 120
ConstructorInitializerIndentWidth: 2 ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 4 ContinuationIndentWidth: 2
DerivePointerAlignment: false DerivePointerAlignment: false
EmptyLineBeforeAccessModifier: Always
IncludeBlocks: Preserve IncludeBlocks: Preserve
IndentAccessModifiers: false
IndentCaseLabels: false IndentCaseLabels: false
IndentExternBlock: NoIndent IndentExternBlock: NoIndent
InsertBraces: false
InsertNewlineAtEOF: true InsertNewlineAtEOF: true
LambdaBodyIndentation: OuterScope PackConstructorInitializers: Never
PackConstructorInitializers: CurrentLine
PointerAlignment: Middle PointerAlignment: Middle
RemoveBracesLLVM: true
RemoveSemicolon: true
QualifierAlignment: Right QualifierAlignment: Right
SpacesInContainerLiterals: false SpacesInContainerLiterals: false
Standard: Latest Standard: Latest
TabWidth: 2 TabWidth: 2
UseTab: Never
---
Language: Java
AllowShortFunctionsOnASingleLine: Empty

View File

@@ -1,8 +0,0 @@
# Files that should not be formatted.
./3party
# A patched copy of the https://registry.khronos.org/OpenGL/api/GLES3/gl3.h
./android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.h
# Formatting it leads to crashes in runtime. Newer protobuf may fix it.
./libs/indexer/drules_struct.pb.cc
# No need to format this 3party tool.
tools/osmctools/*.c

View File

@@ -1,5 +1,6 @@
name: 🐞 Bug Report name: 🐞 Bug Report
description: Report a problem you've encountered description: Report a problem you've encountered
title: "bug: "
labels: labels:
- bug - bug
body: body:

View File

@@ -1,5 +1,6 @@
name: "💡 Feature Request" name: "💡 Feature Request"
description: "Suggest an idea or improvement for CoMaps" description: "Suggest an idea or improvement for CoMaps"
title: "feat: "
labels: labels:
- "enhancement" - "enhancement"
body: body:

View File

@@ -32,6 +32,9 @@ on:
- track_generator/** - track_generator/**
- xcode/** - xcode/**
env:
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
jobs: jobs:
android-google-beta: android-google-beta:
name: Android Google Beta name: Android Google Beta
@@ -68,6 +71,10 @@ jobs:
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }} SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }} RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Compile - name: Compile
shell: bash shell: bash
working-directory: android working-directory: android

View File

@@ -1,4 +1,4 @@
name: Android Check Store Metadata name: Android Check Metadata
on: on:
workflow_dispatch: # Manual trigger workflow_dispatch: # Manual trigger
pull_request: pull_request:
@@ -21,8 +21,5 @@ jobs:
android android
tools/python/check_store_metadata.py tools/python/check_store_metadata.py
- name: Check Google Play metadata - name: Check metadata
run: ./tools/python/check_store_metadata.py gplay run: ./tools/python/check_store_metadata.py android
- name: Check F-Droid metadata
run: ./tools/python/check_store_metadata.py fdroid

View File

@@ -34,6 +34,9 @@ on:
- track_generator/** - track_generator/**
- xcode/** - xcode/**
env:
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
jobs: jobs:
lint: lint:
name: Android Lint name: Android Lint
@@ -48,6 +51,10 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Lint - name: Lint
shell: bash shell: bash
working-directory: android working-directory: android
@@ -86,6 +93,10 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:

View File

@@ -4,6 +4,9 @@ on:
schedule: schedule:
- cron: '0 5 * * 0' # Once per week at 05:00 UTC - cron: '0 5 * * 0' # Once per week at 05:00 UTC
env:
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
jobs: jobs:
precondition: precondition:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -70,6 +73,10 @@ jobs:
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }} SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }} RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Compile - name: Compile
shell: bash shell: bash
working-directory: android working-directory: android

View File

@@ -2,25 +2,30 @@ name: Android Release Metadata
on: on:
workflow_dispatch: # Manual trigger workflow_dispatch: # Manual trigger
env:
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
jobs: jobs:
android-release-metadata: android-release-metadata:
name: Upload Google Play metadata name: Upload Google Play metadata
runs-on: ubuntu-latest runs-on: ubuntu-latest
environment: production environment: production
steps: steps:
- name: Checkout - name: Checkout sources
# TODO: use shallow (and sparse?) checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 1 # - name: Parallel submodules checkout
sparse-checkout: | # shell: bash
android # run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
tools/python/check_store_metadata.py
- name: Restore release keys - name: Restore release keys
shell: bash shell: bash
run: | run: |
echo "$PRIVATE_H" | base64 -d > private.h
echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json
env: env:
PRIVATE_H: ${{ secrets.PRIVATE_H }}
GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }} GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }}
- name: Upload - name: Upload

View File

@@ -5,6 +5,7 @@ on:
env: env:
RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt RELEASE_NOTES: android/app/src/google/play/release-notes/en-US/default.txt
FDROID_VERSION: android/app/src/fdroid/play/version.yaml FDROID_VERSION: android/app/src/fdroid/play/version.yaml
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
jobs: jobs:
tag: tag:
@@ -116,6 +117,10 @@ jobs:
SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }} SECURE_PROPERTIES: ${{ secrets.SECURE_PROPERTIES }}
RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }} RELEASE_KEYSTORE: ${{ secrets.RELEASE_KEYSTORE }}
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Set up SDK - name: Set up SDK
shell: bash shell: bash
run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties run: echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties

View File

@@ -3,20 +3,20 @@ on:
workflow_dispatch: # Manual trigger workflow_dispatch: # Manual trigger
pull_request: pull_request:
paths: paths:
- packaging/app.comaps.comaps.metainfo.xml - packaging/app.organicmaps.desktop.metainfo.xml
- .forgejo/workflows/appstream-check.yaml # Run check on self change - .forgejo/workflows/appstream-check.yaml # Run check on self change
jobs: jobs:
validate-appstream: validate-appstream:
name: Validate appstream metadata xml name: Validate appstream metadata xml
runs-on: ubuntu-latest runs-on: ubuntu-24.04
steps: steps:
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 1 fetch-depth: 1
sparse-checkout: | sparse-checkout: |
packaging/app.comaps.comaps.metainfo.xml packaging/app.organicmaps.desktop.metainfo.xml
- name: Install appstream validator and flatpak Builder - name: Install appstream validator and flatpak Builder
shell: bash shell: bash
@@ -29,8 +29,8 @@ jobs:
- name: Lint appstream data with flatpak Builder - name: Lint appstream data with flatpak Builder
shell: bash shell: bash
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.comaps.comaps.metainfo.xml run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.organicmaps.desktop.metainfo.xml
- name: Run appstreamcli in pedantic mode - name: Run appstreamcli in pedantic mode
shell: bash shell: bash
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.comaps.comaps.metainfo.xml run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.organicmaps.desktop.metainfo.xml

View File

@@ -33,7 +33,7 @@ concurrency:
jobs: jobs:
should-run-check: should-run-check:
name: Should run coverage name: Should run coverage
runs-on: ubuntu-latest runs-on: ubuntu-24.04
outputs: outputs:
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }} run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }} manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}
@@ -59,9 +59,14 @@ jobs:
coverage: coverage:
needs: should-run-check needs: should-run-check
name: Generate coverage report name: Generate coverage report
runs-on: ubuntu-latest runs-on: ubuntu-24.04
if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}} if: ${{ needs.should-run-check.outputs.run-from-pr == 'true' || needs.should-run-check.outputs.manually-triggered == 'true'}}
steps: steps:
- name: Free disk space by removing .NET, Android and Haskell
shell: bash
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -89,6 +94,10 @@ jobs:
llvm \ llvm \
gcovr gcovr
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:

View File

@@ -1,9 +1,8 @@
name: DCO name: dco
on: [pull_request] on: [pull_request]
jobs: jobs:
check: check:
runs-on: ubuntu-latest runs-on: codeberg-tiny
steps: steps:
- name: Check for Developer Certificate of Origin (DCO) compliance - uses: https://github.com/KineticCafe/actions-dco@v1
uses: https://github.com/KineticCafe/actions-dco@fb284c903a7673a3d4b0bdd104479a6f0d46dae7 # v1.3.6

View File

@@ -3,20 +3,20 @@ on:
workflow_dispatch: # Manual trigger workflow_dispatch: # Manual trigger
pull_request: pull_request:
paths: paths:
- qt/res/linux/app.comaps.comaps.desktop - qt/res/app.organicmaps.desktop.desktop
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change - .forgejo/workflows/desktop-file-check.yaml # Run check on self change
jobs: jobs:
validate-desktop-file: validate-desktop-file:
name: Validate .desktop file name: Validate .desktop file
runs-on: ubuntu-latest runs-on: ubuntu-24.04
steps: steps:
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
fetch-depth: 1 fetch-depth: 1
sparse-checkout: | sparse-checkout: |
qt/res/linux/app.comaps.comaps.desktop qt/res/app.organicmaps.desktop.desktop
- name: Install desktop-file-validate tool - name: Install desktop-file-validate tool
shell: bash shell: bash
@@ -27,4 +27,4 @@ jobs:
- name: Validate desktop file - name: Validate desktop file
shell: bash shell: bash
run: desktop-file-validate qt/res/linux/app.comaps.comaps.desktop && echo "Successfully validated .desktop file" run: desktop-file-validate qt/res/app.organicmaps.desktop.desktop && echo "Successfully validated .desktop file"

View File

@@ -35,7 +35,7 @@ jobs:
name: Apple TestFlight name: Apple TestFlight
runs-on: macos-15 runs-on: macos-15
env: env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8 LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8

View File

@@ -37,7 +37,7 @@ jobs:
name: Build iOS name: Build iOS
runs-on: macos-15 runs-on: macos-15
env: env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8 LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8

View File

@@ -7,7 +7,7 @@ jobs:
name: iOS Release name: iOS Release
runs-on: macos-15 runs-on: macos-15
env: env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8 LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8

View File

@@ -31,13 +31,18 @@ on:
jobs: jobs:
linux-no-unity: linux-no-unity:
name: Linux no unity build name: Linux no unity build
runs-on: ubuntu-latest runs-on: ubuntu-24.04
# Cancels previous jobs if the same branch or PR was updated again. # Cancels previous jobs if the same branch or PR was updated again.
concurrency: concurrency:
group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }} group: ${{ github.workflow }}-no-unity-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true cancel-in-progress: true
steps: steps:
- name: Free disk space by removing .NET, Android and Haskell
shell: bash
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -66,6 +71,10 @@ jobs:
libqt6positioning6-plugins \ libqt6positioning6-plugins \
libqt6positioning6 libqt6positioning6
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:
@@ -90,7 +99,7 @@ jobs:
linux-matrix: linux-matrix:
name: Linux builds and tests name: Linux builds and tests
runs-on: ubuntu-latest runs-on: ubuntu-24.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
@@ -102,6 +111,11 @@ jobs:
cancel-in-progress: true cancel-in-progress: true
steps: steps:
- name: Free disk space by removing .NET, Android and Haskell
shell: bash
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -128,19 +142,15 @@ jobs:
libqt6positioning6-plugins \ libqt6positioning6-plugins \
libqt6positioning6 libqt6positioning6
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:
key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }} key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }}
- name: Configure repository
shell: bash
env:
SKIP_MAP_DOWNLOAD: 1
SKIP_GENERATE_SYMBOLS: 1
SKIP_GENERATE_DRULES: 1
run: ./configure.sh
- name: CMake - name: CMake
shell: bash shell: bash
env: env:

View File

@@ -32,7 +32,7 @@ jobs:
name: macOS builds and tests name: macOS builds and tests
runs-on: macos-15 runs-on: macos-15
env: env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
HOMEBREW_NO_ANALYTICS: 1 HOMEBREW_NO_ANALYTICS: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1
strategy: strategy:
@@ -57,6 +57,10 @@ jobs:
run: | run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6 HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install ninja qt@6
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:

View File

@@ -1,382 +0,0 @@
name: map-generator
on:
workflow_dispatch: # Manual trigger
inputs:
jobs:
description: 'Which job(s) to run right now?'
required: true
default: 'all'
type: choice
options:
- all
- copy-coasts
- planet
- wiki
- isolines
- subways
- tiger
- maps
env:
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
S3_BUCKET: ${{ secrets.S3_BUCKET }}
SFTP_USER: ${{ secrets.SFTP_USER }}
SFTP_PASSWORD: ${{ secrets.SFTP_PASSWORD }}
SFTP_HOST: ${{ secrets.SFTP_HOST }}
SFTP_PATH: ${{ secrets.SFTP_PATH }}
DEBIAN_FRONTEND: noninteractive
TZ: Etc/UTC
jobs:
copy-coasts:
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
name: Copy Previously Generated Coasts
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Copy Coasts
shell: bash
run: |
if [ -f /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /media/4tbexternal/osm-planet/latest_coasts.geom
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /media/4tbexternal/osm-planet/latest_coasts.rawgeom
fi
update-planet:
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
name: Update Planet
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y pyosmium osmium-tool python3-venv python3-pip wget2
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Download Planet File if Absent
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-planet/planet/ ]; then
mkdir -p /media/4tbexternal/osm-planet/planet/
fi
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
cd /media/4tbexternal/osm-planet/planet/
wget2 --verbose --progress=bar --continue --debug https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
fi
- name: Update Planet
shell: bash
run: |
cd /media/4tbexternal/osm-planet/planet/
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
- name: Converting planet-latest.osm.pbf to planet.o5m
run: /root/OM/osmctools/osmconvert planet-latest.osm.pbf -o=planet.o5m
wiki-update:
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
name: Update Wikipedia
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y jq curl wget2 rustc cargo git ca-certificates
- name: Clone wikiparser if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/wikiparser ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/wikiparser.git
fi
- name: Check for planet file
shell: bash
run: |
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
echo "ERROR: No file at /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf"
ls -al /media/4tbexternal/
ls -al /media/4tbexternal/osm-planet/
ls -al /media/4tbexternal/osm-planet/planet/
exit 1
fi
- name: Update Wikipedia from Enterprise API
shell: bash
run: |
mkdir -p /media/4tbexternal/osm-planet/wikipedia/dumps
mkdir -p /media/4tbexternal/osm-planet/wikipedia/build
cd /media/4tbexternal/wikiparser
ls -al
echo "Downloading ..."
./download.sh /media/4tbexternal/osm-planet/wikipedia/dumps
echo "Running ..."
./run.sh /media/4tbexternal/osm-planet/wikipedia/build \
/media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf \
/media/4tbexternal/osm-planet/wikipedia/dumps/latest/*.tar.gz
echo "DONE"
update-isolines:
if: inputs.jobs == 'isolines' || inputs.jobs == 'all'
name: Update Isolines
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq \
&& apt-get install -y --no-install-recommends \
curl \
osmctools \
rclone \
git \
ca-certificates \
openssh-client \
sshpass \
vim \
wget \
build-essential \
clang \
cmake \
python3 \
python3-pip \
python3.12-venv \
qt6-base-dev \
qt6-positioning-dev \
libc++-dev \
libfreetype-dev \
libglvnd-dev \
libgl1-mesa-dev \
libharfbuzz-dev \
libicu-dev \
libqt6svg6-dev \
libqt6positioning6-plugins \
libqt6positioning6 \
libsqlite3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
zlib1g-dev
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
apt-get update -qq && apt-get install -y --no-install-recommends git
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Update Isolines
shell: bash
run: |
cd /media/4tbexternal/comaps-init/
./tools/unix/build_omim.sh -R topography_generator_tool
rm -rf ../osm-planet/isolines/
mkdir ../osm-planet/isolines/
../omim-build-relwithdebinfo/topography_generator_tool \
--profiles_path=./data/conf/isolines/isolines-profiles.json \
--countries_to_generate_path=./data/conf/isolines/countries-to-generate.json \
--tiles_isolines_out_dir=../osm-planet/isolines/tmp-tiles/ \
--countries_isolines_out_dir=../osm-planet/isolines/ \
--data_dir=./data/ \
--srtm_path=../osm-planet/SRTM-patched-europe/ \
--threads=22
update-subways:
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
name: Update Subways
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends curl osmctools osmium-tool python3-venv ca-certificates git python3-pip
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Clone subways if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/subways ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/subways.git
fi
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Update Subways
shell: bash
run: |
cd /media/4tbexternal/comaps-init/
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
./tools/unix/maps/generate_subways.sh
update-tiger:
if: inputs.jobs == 'tiger' || inputs.jobs == 'all'
name: Update TIGER
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends \
build-essential \
clang \
cmake \
ninja-build \
ca-certificates \
git \
wget2
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Build address_parser
shell: bash
run: |
cd /media/4tbexternal/comaps-init
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
./tools/unix/build_omim.sh -R address_parser_tool
- name: Update TIGER from Nominatim
shell: bash
run: |
cd /media/4tbexternal/osm-planet/
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | /media/4tbexternal/omim-build-relwithdebinfo/address_parser_tool --output_path=./tiger
generate-maps:
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
name: Generate Maps
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
options: --ulimit nofile=262144:262144
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq \
&& apt-get install -y --no-install-recommends \
curl \
osmctools \
rclone \
git \
ca-certificates \
openssh-client \
sshpass \
vim \
wget \
build-essential \
clang \
cmake \
ninja-build \
python3 \
python3-pip \
python3.12-venv \
qt6-base-dev \
qt6-positioning-dev \
libc++-dev \
libfreetype-dev \
libglvnd-dev \
libgl1-mesa-dev \
libharfbuzz-dev \
libicu-dev \
libqt6svg6-dev \
libqt6positioning6-plugins \
libqt6positioning6 \
libsqlite3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
zlib1g-dev
- name: Clone repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Make output folders if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-maps ]; then
mkdir -p /media/4tbexternal/osm-maps
fi
- name: Get SRTM if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-planet/SRTM-patched-europe/ ]; then
echo "ERROR: NO SRTM"
exit 1
fi
- name: Symlink paths for repo scripts
shell: bash
run: |
mkdir -p /root/OM
ln -s /media/4tbexternal/comaps-init /root/OM/organicmaps
ln -s /media/4tbexternal/osm-planet /home/planet
ln -s /media/4tbexternal/osm-maps /root/OM/maps_build
- name: Run docker_maps_generator.sh
shell: bash
run: |
cd /root/OM/organicmaps
./tools/unix/docker_maps_generator.sh

View File

@@ -0,0 +1,22 @@
name: Close stale PRs
on:
schedule:
- cron: "0 0 * * *" # Runs every day at midnight
jobs:
stale:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-pr-stale: 180 # 6 months before warning
days-before-pr-close: 365 # Closed after 12 months
stale-pr-label: "stale"
stale-pr-message: "Hi! This PR has been inactive for 6 months. If it's still relevant, please update it to let us know youd like to keep it open 😊"
close-pr-message: "This PR has been automatically closed after 12 months of inactivity."
days-before-issue-stale: -1 # Issues are never stale
days-before-issue-close: -1 # Issues are never closed
remove-stale-when-updated: true

View File

@@ -6,8 +6,7 @@ on:
- main - main
env: env:
JAVA_HOME: /usr/lib/jvm/temurin-21-jdk-amd64 # Java 21 is required for Android Gradle 8 plugin JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
SKIP_MAP_DOWNLOAD: true
jobs: jobs:
lint: lint:
@@ -23,16 +22,9 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Install protobuf - name: Init boost, generate textures
shell: bash shell: bash
run: | run: ./configure.sh --skip-map-download
sudo apt-get update -y
sudo apt-get install -y python3-pip
pip install "protobuf<3.21" --break-system-packages
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Lint - name: Lint
shell: bash shell: bash
@@ -73,9 +65,7 @@ jobs:
libxinerama-dev \ libxinerama-dev \
libxcursor-dev \ libxcursor-dev \
libxi-dev \ libxi-dev \
python3-pip \
zlib1g-dev zlib1g-dev
pip install "protobuf<3.21" --break-system-packages
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -86,6 +76,10 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Init boost, generate textures
shell: bash
run: ./configure.sh --skip-map-download
- name: Configure ccache - name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2 uses: hendrikmuhs/ccache-action@v1.2
with: with:

View File

@@ -1,51 +0,0 @@
name: Code style check
on:
pull_request:
branches: [ master ]
paths: # Should stay in sync with tools/unix/clang-format.sh
- '.github/workflows/code-style-check.yaml'
- 'android/app/src/**.java'
- 'android/sdk/src/**.java'
- 'android/sdk/src/main/cpp/**.[ch]pp'
- 'dev_sandbox/**.[ch]pp'
- 'generator/**.[ch]pp'
- 'iphone/**.[ch]pp'
- 'iphone/**.[hm]'
- 'iphone/**.mm'
- 'libs/**.[ch]pp'
- 'libs/**.[hm]'
- '!libs/indexer/drules_struct.pb.h'
- 'libs/**.mm'
- 'qt/**.[ch]pp'
- 'qt/**.h'
- 'tools/**.[ch]pp'
- '.clang-format'
- '.clang-format-ignore'
jobs:
code-style-check:
runs-on: ubuntu-latest
steps:
- name: Install clang-format
run: |
sudo apt purge -y clang-format-18 # Remove default old version of clang-format
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
echo 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main' | sudo tee /etc/apt/sources.list.d/llvm-toolchain-noble-20.list
sudo apt-get update
sudo apt-get install -y clang-format-20
sudo update-alternatives --force --install /usr/bin/clang-format clang-format /usr/bin/clang-format-20 10
sudo update-alternatives --force --install /usr/bin/git-clang-format git-clang-format /usr/bin/git-clang-format-20 10
clang-format --version
- name: Checkout sources
uses: actions/checkout@v4
- name: Check code style
run: tools/unix/clang-format.sh
- name: Post clang-format comments
if: failure()
uses: reviewdog/action-suggester@v1.21.0
with:
tool_name: clang-format
fail_level: error

View File

@@ -10,7 +10,7 @@ jobs:
name: Build iOS name: Build iOS
runs-on: macos-15 runs-on: macos-15
env: env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8 LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8
@@ -30,7 +30,6 @@ jobs:
run: | run: |
brew install qt \ brew install qt \
optipng optipng
pip3 install "protobuf<3.21" --break-system-packages
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -38,7 +37,7 @@ jobs:
shell: bash shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20)) run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20))
- name: Configure repository - name: Init boost, download World map, generate textures
shell: bash shell: bash
run: ./configure.sh run: ./configure.sh

30
.gitignore vendored
View File

@@ -14,29 +14,18 @@ stxxl.errlog
stxxl.log stxxl.log
screenlog.0 screenlog.0
data/styles/*/*/out/*
data/resources-*_design/*
# symbols png/sdf are now generated at build # symbols png/sdf are now generated at build
data/symbols/**/symbols.png data/resources-*_*/symbols.png
data/symbols/**/symbols.sdf data/resources-*_*/symbols.sdf
data/drules_proto_default_design.bin
data/colors_design.txt
data/patterns_design.txt
data/bookmarks data/bookmarks
data/edits.xml data/edits.xml
data/World.mwm data/World.mwm
data/WorldCoasts.mwm data/WorldCoasts.mwm
data/world_mwm/*
data/*_hash
data/drules_proto*
data/classificator.txt*
data/types.txt*
data/visibility.txt*
data/colors.txt*
data/patterns.txt*
# TODO: designer is not used at the moment
# data/symbols/*/design/
# data/colors_design.txt
# data/patterns_design.txt
# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh
data/categories.txt
# Compiled Python # Compiled Python
*.pyc *.pyc
@@ -55,9 +44,10 @@ omim.sdf
*.suo *.suo
*.aps *.aps
*.rc *.rc
!qt/res/windows/windows.rc !qt/res/windows.rc
*.pdb *.pdb
out/ out/*
qt/mapswithme.log
# XCode # XCode
xcode/keys/* xcode/keys/*

4
.gitmodules vendored
View File

@@ -65,7 +65,3 @@
[submodule "3party/imgui/imgui"] [submodule "3party/imgui/imgui"]
path = 3party/imgui/imgui path = 3party/imgui/imgui
url = https://github.com/ocornut/imgui url = https://github.com/ocornut/imgui
[submodule "3party/glaze"]
path = 3party/glaze
url = https://github.com/stephenberry/glaze
branch = main

View File

@@ -57,7 +57,6 @@ endif()
add_subdirectory(agg) add_subdirectory(agg)
add_subdirectory(bsdiff-courgette) add_subdirectory(bsdiff-courgette)
add_subdirectory(glaze)
add_subdirectory(minizip) add_subdirectory(minizip)
add_subdirectory(open-location-code) add_subdirectory(open-location-code)
add_subdirectory(opening_hours) add_subdirectory(opening_hours)

View File

@@ -4,9 +4,7 @@ set(FT_DISABLE_HARFBUZZ ON)
add_subdirectory(freetype) add_subdirectory(freetype)
# Fix warning with ONE_PIXEL macro clash. # Fix warning with ONE_PIXEL macro clash.
if(NOT MSVC)
target_compile_options(freetype PRIVATE -Wno-macro-redefined) target_compile_options(freetype PRIVATE -Wno-macro-redefined)
endif()
# Use ft2build.h from the current directory instead of the default. # Use ft2build.h from the current directory instead of the default.
target_include_directories(freetype target_include_directories(freetype

Submodule 3party/glaze deleted from 5a58d7936e

View File

@@ -11,15 +11,7 @@ target_include_directories(${PROJECT_NAME}
harfbuzz/src harfbuzz/src
) )
if (MSVC) # Keep these settigns in sync with xcode/harfbuzz project.
target_compile_options(${PROJECT_NAME}
PRIVATE
/GR-
/EHsc-
/Zc:threadSafeInit-
)
else()
# Keep these settings in sync with xcode/harfbuzz project.
target_compile_options(${PROJECT_NAME} target_compile_options(${PROJECT_NAME}
PRIVATE PRIVATE
-fno-rtti -fno-rtti
@@ -27,7 +19,6 @@ else()
-fno-threadsafe-statics -fno-threadsafe-statics
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic> $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic>
) )
endif()
target_compile_definitions(${PROJECT_NAME} target_compile_definitions(${PROJECT_NAME}
PRIVATE PRIVATE
@@ -37,19 +28,13 @@ target_compile_definitions(${PROJECT_NAME}
#$<$<BOOL:${APPLE}>:HAVE_CORETEXT> #$<$<BOOL:${APPLE}>:HAVE_CORETEXT>
HAVE_ATEXIT HAVE_ATEXIT
HAVE_GETPAGESIZE HAVE_GETPAGESIZE
HAVE_MPROTECT
HAVE_SYSCONF
)
if (NOT MSVC)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
HAVE_MMAP HAVE_MMAP
HAVE_MPROTECT
HAVE_PTHREAD HAVE_PTHREAD
HAVE_SYSCONF
HAVE_SYS_MMAN_H HAVE_SYS_MMAN_H
HAVE_UNISTD_H HAVE_UNISTD_H
) )
endif()
target_link_libraries(${PROJECT_NAME} Freetype::Freetype) target_link_libraries(${PROJECT_NAME} Freetype::Freetype)

View File

@@ -172,7 +172,6 @@ add_library(icuuc
icu/icu4c/source/common/uvector.cpp icu/icu4c/source/common/uvector.cpp
icu/icu4c/source/common/uvectr32.cpp icu/icu4c/source/common/uvectr32.cpp
icu/icu4c/source/common/uvectr64.h icu/icu4c/source/common/uvectr64.h
icu/icu4c/source/common/wintz.cpp
icu/icu4c/source/common/wintz.h icu/icu4c/source/common/wintz.h
) )

View File

@@ -11,7 +11,6 @@ set(SRC
protobuf/src/google/protobuf/message_lite.cc protobuf/src/google/protobuf/message_lite.cc
protobuf/src/google/protobuf/repeated_field.cc protobuf/src/google/protobuf/repeated_field.cc
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc
protobuf/src/google/protobuf/stubs/bytestream.cc protobuf/src/google/protobuf/stubs/bytestream.cc
protobuf/src/google/protobuf/stubs/common.cc protobuf/src/google/protobuf/stubs/common.cc
protobuf/src/google/protobuf/stubs/int128.cc protobuf/src/google/protobuf/stubs/int128.cc

View File

@@ -7,6 +7,7 @@
#include <boost/utility/enable_if.hpp> #include <boost/utility/enable_if.hpp>
#include <boost/utility.hpp> #include <boost/utility.hpp>
#include <boost/type_traits/is_pod.hpp> #include <boost/type_traits/is_pod.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
#include "mappable_vector.hpp" #include "mappable_vector.hpp"
@@ -282,6 +283,12 @@ namespace succinct { namespace mapper {
return mapper.bytes_read(); return mapper.bytes_read();
} }
template <typename T>
size_t map(T& val, boost::iostreams::mapped_file_source const& m, uint64_t flags = 0, const char* friendly_name = "<TOP>")
{
return map(val, m.data(), flags, friendly_name);
}
template <typename T> template <typename T>
uint64_t size_of(T& val) uint64_t size_of(T& val)
{ {

View File

@@ -8,6 +8,7 @@
#include <stdint.h> #include <stdint.h>
#include <boost/iterator/iterator_facade.hpp> #include <boost/iterator/iterator_facade.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
namespace succinct { namespace util { namespace succinct { namespace util {
@@ -204,6 +205,29 @@ namespace succinct { namespace util {
std::string m_cur_value; std::string m_cur_value;
}; };
struct mmap_lines
{
typedef buffer_line_iterator iterator;
typedef buffer_line_iterator const_iterator;
mmap_lines(std::string filename)
: m_map(filename)
{}
const_iterator begin() const
{
return const_iterator(m_map.data(), m_map.size());
}
const_iterator end() const
{
return const_iterator();
}
private:
boost::iostreams::mapped_file_source m_map;
};
struct input_error : std::invalid_argument struct input_error : std::invalid_argument
{ {
input_error(std::string const& what) input_error(std::string const& what)

View File

@@ -19,18 +19,7 @@ extern "C" {
#endif #endif
#include "vulkan_wrapper.h" #include "vulkan_wrapper.h"
#if defined(_WIN32)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifndef NOMINMAX
#define NOMINMAX
#endif
#include <windows.h>
#else
#include <dlfcn.h> #include <dlfcn.h>
#endif
int InitVulkan(void) { int InitVulkan(void) {
#if defined(__APPLE__) #if defined(__APPLE__)
@@ -41,9 +30,6 @@ int InitVulkan(void) {
if (!libvulkan) { if (!libvulkan) {
libvulkan = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL); libvulkan = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL);
} }
#elif defined( _WIN32 )
HMODULE libvulkan = LoadLibraryA("vulkan-1.dll");
auto dlsym = [](HMODULE h, char const * name) { return GetProcAddress(h, name); };
#else #else
void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL);
if (!libvulkan) { if (!libvulkan) {

View File

@@ -1,9 +1,8 @@
cmake_minimum_required(VERSION 3.22.1) cmake_minimum_required(VERSION 3.22.1)
project(omim C CXX) project(omim C CXX)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD 17)
# Our code does not rely on gnu extensions. # Our code does not rely on gnu extensions.
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_C_EXTENSIONS OFF)
@@ -39,12 +38,12 @@ if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963 # https://gitlab.kitware.com/cmake/cmake/-/issues/21963
enable_language(OBJC) enable_language(OBJC)
set(CMAKE_OBJC_EXTENSIONS OFF) set(CMAKE_OBJC_EXTENSIONS OFF)
set(CMAKE_OBJC_STANDARD 23) set(CMAKE_OBJC_STANDARD 11)
set(CMAKE_OBJC_FLAGS -fobjc-arc) set(CMAKE_OBJC_FLAGS -fobjc-arc)
set(CMAKE_OBJC_VISIBILITY_PRESET hidden) set(CMAKE_OBJC_VISIBILITY_PRESET hidden)
enable_language(OBJCXX) enable_language(OBJCXX)
set(CMAKE_OBJCXX_EXTENSIONS OFF) set(CMAKE_OBJCXX_EXTENSIONS OFF)
set(CMAKE_OBJCXX_STANDARD 23) set(CMAKE_OBJCXX_STANDARD 20)
set(CMAKE_OBJCXX_FLAGS -fobjc-arc) set(CMAKE_OBJCXX_FLAGS -fobjc-arc)
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden) set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
endif() endif()
@@ -85,7 +84,7 @@ if (MSVC)
add_compile_options(/utf-8) add_compile_options(/utf-8)
add_link_options(/INCREMENTAL:NO) add_link_options(/INCREMENTAL:NO)
else() else()
add_compile_options(-ffast-math $<$<CXX_COMPILER_ID:GNU>:-Wno-psabi>) add_compile_options(-ffast-math)
endif() endif()
if (PLATFORM_WIN) if (PLATFORM_WIN)
@@ -104,29 +103,12 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel") elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
add_definitions(-DRELEASE) add_definitions(-DRELEASE)
if (NOT MSVC) if (NOT MSVC)
add_compile_options(-O3 $<$<CXX_COMPILER_ID:GNU>:-flto=auto>) add_compile_options(-Ofast) # Also enables -ffast-math
endif() endif()
else() else()
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE}) message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
endif() endif()
if (${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
add_compile_options(-fno-omit-frame-pointer)
endif()
# Linux GCC LTO plugin fix.
if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_TYPE MATCHES "^Rel"))
# To force errors if LTO was not enabled.
add_compile_options(-fno-fat-lto-objects)
# To fix ar and ranlib "plugin needed to handle lto object".
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}*/liblto_plugin.so)
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
endif()
message(STATUS "Build type: " ${CMAKE_BUILD_TYPE}) message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
if (PLATFORM_LINUX OR PLATFORM_ANDROID) if (PLATFORM_LINUX OR PLATFORM_ANDROID)
@@ -175,15 +157,15 @@ if (NOT PLATFORM_IPHONE AND NOT PLATFORM_ANDROID)
find_package(Qt6 COMPONENTS REQUIRED ${qt_components} PATHS $ENV{QT_PATH} /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6 /usr/lib/x86_64-linux-gnu/qt6) find_package(Qt6 COMPONENTS REQUIRED ${qt_components} PATHS $ENV{QT_PATH} /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6 /usr/lib/x86_64-linux-gnu/qt6)
set(MINIMUM_REQUIRED_QT_VERSION 6.4.0) set(MINIMUM_REQUIRED_QT_VERSION 6.4.0)
if (Qt6_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION}) if (Qt6Widgets_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
message(FATAL_ERROR "Unsupported Qt version: ${Qt6_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}") message(FATAL_ERROR "Unsupported Qt version: ${Qt6Widgets_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
else() else()
message(STATUS "Found Qt version: ${Qt6_VERSION}") message(STATUS "Found Qt version: ${Qt6Widgets_VERSION}")
endif() endif()
endif() endif()
# To allow #include "base/file_name.hpp" in all sources. # To allow #include "base/file_name.hpp" in all sources.
include_directories("${CMAKE_HOME_DIRECTORY}" "${CMAKE_HOME_DIRECTORY}/libs" "${CMAKE_HOME_DIRECTORY}/tools") include_directories(${CMAKE_HOME_DIRECTORY})
if (USE_PCH) if (USE_PCH)
message(STATUS "Precompiled headers are ON") message(STATUS "Precompiled headers are ON")
@@ -195,7 +177,7 @@ if (USE_PCH)
endif() endif()
# Should be on the root level, not in 3party, so tests can get these dependencies. # Should be on the root level, not in 3party, so tests can get these dependencies.
if (PLATFORM_LINUX) if (PLATFORM_LINUX OR PLATFORM_WIN)
find_package(ICU COMPONENTS uc i18n data REQUIRED) find_package(ICU COMPONENTS uc i18n data REQUIRED)
find_package(Freetype REQUIRED) find_package(Freetype REQUIRED)
find_package(harfbuzz REQUIRED) find_package(harfbuzz REQUIRED)
@@ -225,43 +207,46 @@ endif()
# Used in qt/ and shaders/ # Used in qt/ and shaders/
find_package(Python3 REQUIRED COMPONENTS Interpreter) find_package(Python3 REQUIRED COMPONENTS Interpreter)
execute_process( add_subdirectory(base)
COMMAND ${Python3_EXECUTABLE} -c "import google.protobuf; add_subdirectory(coding)
print(google.protobuf.__version__)" add_subdirectory(descriptions)
RESULT_VARIABLE PROTOBUF_CHECK add_subdirectory(drape)
OUTPUT_VARIABLE PROTOBUF_VERSION add_subdirectory(drape_frontend)
OUTPUT_STRIP_TRAILING_WHITESPACE add_subdirectory(editor)
ERROR_QUIET add_subdirectory(ge0)
) add_subdirectory(generator/mwm_diff)
add_subdirectory(geometry)
if(PROTOBUF_CHECK EQUAL 0) add_subdirectory(indexer)
if(PROTOBUF_VERSION VERSION_LESS "4.0.0") add_subdirectory(kml)
message(STATUS "Python protobuf ${PROTOBUF_VERSION} found (< 4.0)") add_subdirectory(map)
else() add_subdirectory(cppjansson)
message(FATAL_ERROR "Python protobuf ${PROTOBUF_VERSION} found, but version < 4.0 required") add_subdirectory(platform)
endif() add_subdirectory(routing)
else() add_subdirectory(routing_common)
message(FATAL_ERROR "Python protobuf not found. Install version <4.0") add_subdirectory(search)
endif() add_subdirectory(shaders)
add_subdirectory(storage)
add_subdirectory(tracking)
add_subdirectory(libs) add_subdirectory(traffic)
add_subdirectory(transit)
if (PLATFORM_DESKTOP) if (PLATFORM_DESKTOP)
add_subdirectory(dev_sandbox) omim_add_tool_subdirectory(feature_list)
add_subdirectory(generator) add_subdirectory(generator)
add_subdirectory(tools) add_subdirectory(openlr)
add_subdirectory(poly_borders)
omim_add_tool_subdirectory(topography_generator)
add_subdirectory(track_analyzing)
omim_add_tool_subdirectory(track_generator)
if (NOT SKIP_QT_GUI) if (NOT SKIP_QT_GUI)
add_subdirectory(qt) add_subdirectory(qt)
omim_add_tool_subdirectory(skin_generator)
endif() endif()
if (GENERATOR_TOOL) add_subdirectory(dev_sandbox)
add_compile_options(-march=native -mtune=native)
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
endif()
endif() endif()
omim_add_test_subdirectory(libs/qt_tstfrm) omim_add_test_subdirectory(qt_tstfrm)
if (PLATFORM_ANDROID) if (PLATFORM_ANDROID)
add_subdirectory(android/sdk/src/main/cpp) add_subdirectory(android/app/src/main/cpp)
endif() endif()

View File

@@ -7,11 +7,9 @@ CoMaps contributors:
(in alphabetic order) (in alphabetic order)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Bastian Greshake Tzovaras
clover sage clover sage
Harry Bond <me@hbond.xyz> Harry Bond <me@hbond.xyz>
vikiawv vikiawv
Yannik Bloscheck
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Organic Maps (formerly OMaps) contributors: Organic Maps (formerly OMaps) contributors:

172
README.md
View File

@@ -1,93 +1,62 @@
<!-- Navigation Bar --> <!--<div align="center">
<p align="center"> <img src="qt/res/logo.png" height="100"/>
<a href="https://codeberg.org/comaps#comaps">Project Intro</a> | </div>-->
<a href="https://codeberg.org/comaps/Governance#comaps-project-governance-docs">Governance</a> |
<a href="https://codeberg.org/comaps/Governance/src/branch/main/FAQ.md">FAQ</a> |
<a href="#contributing">Contribute</a> |
<a href="https://www.comaps.app/donate">Donate</a> |
<a href="https://codeberg.org/comaps#keep-connected">Keep Connected</a>
</p>
<div align="center" > <!-- a nav bar -->
<img src="docs/badges/logo.svg" width="150"> [Project Intro](https://codeberg.org/comaps#comaps)
</div> | [Governance](https://codeberg.org/comaps/Governance#comaps-project-governance-docs)
| [FAQ](https://codeberg.org/comaps/Governance/src/branch/main/FAQ.md)
| [Contribute](#contributing)
| [Donate](https://www.comaps.app/donate)
| [Keep Connected](https://codeberg.org/comaps#keep-connected)
# [CoMaps](https://comaps.app) Hike, Bike, Drive Offline Easy Map Navigation with Privacy
[
![GitHub Actions Workflow Android Status](https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github%2Fworkflows%2Fandroid-check.yaml?style=flat&label=Android%20Build&logo=android&logoColor=white)
](https://github.com/comaps/comaps/actions/workflows/android-check.yaml)
[
![GitHub Actions Workflow iOS Status](https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github%2Fworkflows%2Fios-check.yaml?style=flat&label=iOS%20Build&logo=apple&logoColor=white)
](https://github.com/comaps/comaps/actions/workflows/ios-check.yaml)
[
![Donate via OpenCollective](https://img.shields.io/opencollective/all/comaps?logo=opencollective&color=blue&label=Open%20Collective%20Donors)
](https://opencollective.com/comaps)
[
![Donate via Liberapay](https://img.shields.io/liberapay/patrons/CoMaps.svg?logo=liberapay&label=Liberapay%20Patrons&color=efcc00&)
](https://liberapay.com/CoMaps)
<div align="center">
<h1><a href="https://comaps.app/">CoMaps</a></h1>
<h2>Hike, Bike, Drive Offline - Easy Map Navigation with Privacy</h2>
</div>
<div align="center">
<p align="center">
<a href="https://codeberg.org/comaps/comaps/src/branch/main/LICENSE">
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge" alt="Android Build Status"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge" alt="iOS Build Status"/>
</a>
<a href="https://opencollective.com/comaps">
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors"/>
</a>
<a href="https://liberapay.com/CoMaps">
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons"/>
</a>
</p>
</div>
--- A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org) data and reinforced with commitment to transparency, privacy and being not-for-profit. CoMaps is a fork/spin-off of Organic Maps, which in turn is a fork of Maps.ME.
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME. There are apps for Android and iOS (and ARM MacOS).
An alpha Linux / MacOS Qt desktop version, which is also suitable for Linux phones.
<p align="center"> [<img src="docs/badges/apple-appstore.png" alt="App Store" width="160">](https://apps.apple.com/app/comaps/id6747180809)
<a href="https://apps.apple.com/app/comaps/id6747180809"> [<img src="docs/badges/google-play.png" alt="Google Play" width="160">](https://play.google.com/store/apps/details?id=app.comaps.google)
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/> [<img src="docs/badges/fdroid.png" alt="F-Droid" width="160">](https://f-droid.org/en/packages/app.comaps.fdroid/)
</a> [<img src="docs/badges/codeberg.png" alt="Codeberg" width="160">](https://codeberg.org/comaps/comaps/releases)
<a href="https://play.google.com/store/apps/details?id=app.comaps.google">
<img src="docs/badges/google-play.png" alt="Google Play" width="160"/>
</a>
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
</a>
<a href="https://apt.izzysoft.de/fdroid/index/apk/app.comaps">
<img src="docs/badges/izzyondroid.png" alt="Obtainium" width="160"/>
</a>
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://codeberg.org/comaps/comaps">
<img src="docs/badges/obtainium.png" alt="Obtainium" width="160"/>
</a>
<a href="https://codeberg.org/comaps/comaps/releases">
<img src="docs/badges/codeberg.png" alt="Codeberg" width="160"/>
</a>
</p>
<p float="left">
<!-- Screenshots -->
<p align="center">
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/1.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/2.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/3.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.png" width="180" /> <img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/4.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/5.png" width="180" />
<img src="android/app/src/fdroid/play/listings/en-US/graphics/phone-screenshots/6.png" width="180" />
</p> </p>
--- **Offline-focused**: Plan and navigate your trip abroad without the need for cellular service, search waypoints while on a distant hike, etc. All app functions are designed to work offline.
## ⚡️ Highlights **Respecting Privacy**: The app is designed with privacy in mind - does not identify people, does not track, and does not collect personal information. Ads-free.
- **Offline-first**: Navigate without a connection **Simple and Polished**: Essential, easy to use features that just work.
- **Privacy-respecting**: No tracking, ads or data collection
- **Lightweight**: Battery- and space-efficient
- **Simple**: Polished, user-focused interface
- **Cross-platform**: Available for Android, iOS, MacOS, and Linux.
- **Community-built**: Free, open source, and collaborative
- **Transparent**: Open finances and governance
--- **Saves Your Battery and Space**: Doesnt drain your battery like other navigation apps. Compact maps save precious space on your phone.
## 🚀 Main Features **Free and Built by the Community**: People like you helped build the app by adding places to [OpenStreetMap](https://www.openstreetmap.org), testing and giving feedback on features and contributing their development skills and money.
**Open and Transparent Decision-making and Financials, Not-for-profit and Fully Open Source.**
### Main Features
- Downloadable detailed maps with places which are not available with Google Maps - Downloadable detailed maps with places which are not available with Google Maps
@@ -117,56 +86,41 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
- Android Auto and CarPlay support - Android Auto and CarPlay support
***Freedom Is Here Navigate the world with privacy and community at the forefront.*** *Freedom Is Here - Discover your journey, navigate the world with privacy and community at the forefront!*
--- ## Contributing
## 🤝 Contributing
You can help by donating, contributing code, translating, or by telling others about it. To build the best maps app there is a need for software development, design, product, community development, and other areas. Reach out to us and let us know how you want to help. You can help by donating, contributing code, translating, or by telling others about it. To build the best maps app there is a need for software development, design, product, community development, and other areas. Reach out to us and let us know how you want to help.
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md) If you want to build the project, check [docs/INSTALL.md](docs/INSTALL.md). If you want to help the project,
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) see [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md). You can help in many ways, the ability to code is not necessary.
There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/main/contribute.md#3-team-messaging) chat for active contributors. Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
--- There is a dedicated Zulip chat for active contributors: [comaps.zulipchat.com](https://comaps.zulipchat.com)
## 💬 Feedback ### Feedback
- Rate us on [App Store](https://apps.apple.com/app/comaps/id6747180809) and [Google Play](https://play.google.com/store/apps/details?id=app.comaps.google)
- **Rate us on the [App Store](https://apps.apple.com/app/comaps/id6747180809)
and [Google Play](https://play.google.com/store/apps/details?id=app.comaps.google)**.
- Star our repos on Codeberg - Star our repos on Codeberg
- Report bugs or request features on the [issue tracker](https://codeberg.org/comaps/comaps/issues) - Report bugs and discuss features at [the issue tracker](https://codeberg.org/comaps/comaps/issues)
--- ## How is development funded?
## 💸 Funding The app is free for everyone, so we rely on donations. Please [donate](https://opencollective.com/comaps/donate) to support the CoMaps community and see this open project thrive!
CoMaps is free. To fund development, we rely on your voluntary support ♥️
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps). The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
--- ## Privacy
## 🔒 Privacy The Android application was analysed by the [Exodus platform](https://reports.exodus-privacy.eu.org/fr/reports/app.comaps.google/latest/)
The Android app has been reviewed by [Exodus Privacy](https://reports.exodus-privacy.eu.org/en/reports/app.comaps.google/latest/). ## License and Copyright
To [verify](https://developer.android.com/studio/command-line/apksigner#usage-verify) the APK, use the following signing certificate fingerprints: Licensed under the Apache License, Version 2.0. See
``` [LICENSE](LICENSE),
SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c [NOTICE](NOTICE)
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade and [data/copyright.html](data/copyright.html)
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e for more information.
```
To verify CoMaps via [AppVerifier](https://github.com/soupslurpr/AppVerifier), use the following signing certificate fingerprint:
```
app.comaps
48:94:E8:E6:96:36:27:EF:66:00:31:D8:59:3F:E7:72:97:F8:35:AC:B4:E2:38:10:00:3E:92:61:35:02:3B:4C
```
---
## ⚖️ License
Licensed under the Apache License 2.0.
See [LICENSE](LICENSE), [NOTICE](NOTICE), and [data/copyright.html](data/copyright.html).

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64pt" height="64pt" viewBox="0 0 835 835">
<path d="M698.5 141.1a20 20 0 0 1 30.8-1.3A416 416 0 0 1 835 417.4a416 416 0 0 1-93.3 263 20 20 0 0 1-31.3-.6l-43-56.6a20 20 0 0 1-.2-24 307 307 0 0 0 59.3-181.8c0-74.2-26.2-142.3-69.9-195.6a20 20 0 0 1-.5-24.8zM260.7 456.4a20 20 0 0 1-7.7-36.7l282-177.4a20 20 0 0 1 29.9 22.7l-97 318.9a20 20 0 0 1-37.5 2.2l-49.2-111.5z" style="fill:#ccdfca"/>
<path d="M626.3 753a20 20 0 0 1-6.2 29.6A416 416 0 0 1 417.5 835 417.7 417.7 0 0 1 0 417.4 417.7 417.7 0 0 1 603.3 43.5a20 20 0 0 1 7 30l-42.4 55.8a20 20 0 0 1-24.2 6.1 307 307 0 0 0-126.2-27 309 309 0 0 0-309 309c0 170.6 138.5 309 309 309a307 307 0 0 0 141.6-34.3 20 20 0 0 1 25.1 5.6z" style="fill:#fefdf6"/>
</svg>

Before

Width:  |  Height:  |  Size: 753 B

View File

@@ -18,4 +18,5 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libxi-dev \ libxi-dev \
optipng optipng
WORKDIR /root/comaps WORKDIR /root/comaps
RUN ./configure.sh
CMD ./gradlew -Parm64 assembleFdroidDebug CMD ./gradlew -Parm64 assembleFdroidDebug

View File

@@ -24,6 +24,3 @@
/src/main/res/drawable-mdpi/uk_northern_ireland.png /src/main/res/drawable-mdpi/uk_northern_ireland.png
/src/main/res/drawable-mdpi/uk_scotland.png /src/main/res/drawable-mdpi/uk_scotland.png
/src/main/res/drawable-mdpi/uk_wales.png /src/main/res/drawable-mdpi/uk_wales.png
# Symlinked to F-Droid relnotes by tools/unix/link_gplay_relnotes.sh
/src/google/play/release-notes

View File

@@ -15,70 +15,134 @@ buildscript {
} }
} }
repositories {
google()
mavenCentral()
maven { url 'https://www.jitpack.io' } // MPAndroidChart
}
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.github.triplet.play' apply plugin: 'com.github.triplet.play'
apply plugin: 'ru.cian.huawei-publish-gradle-plugin' apply plugin: 'ru.cian.huawei-publish-gradle-plugin'
def run(cmd) {
def stdout = new ByteArrayOutputStream()
exec {
commandLine = cmd
standardOutput = stdout
}
return stdout.toString()
}
import com.github.triplet.gradle.androidpublisher.ReleaseStatus import com.github.triplet.gradle.androidpublisher.ReleaseStatus
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
def getVersion() {
def isWindows = DefaultNativePlatform.getCurrentOperatingSystem().isWindows()
def bash = isWindows ? 'C:\\Program Files\\Git\\bin\\bash.exe' : 'bash'
def versionCode = Integer.parseInt(run([bash, '../../tools/unix/version.sh', 'android_code']).trim())
def versionName = run([bash, '../../tools/unix/version.sh', 'android_name']).trim()
return new Tuple2(versionCode, versionName)
}
def getCommitMessage() { def getCommitMessage() {
return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim() return run(['git', '--no-pager', 'show', '-s', '--format=%s%n%n%b', 'HEAD']).trim()
} }
def osName = System.properties['os.name'].toLowerCase()
project.ext.appId = 'app.comaps' project.ext.appId = 'app.comaps'
project.ext.appName = 'CoMaps' project.ext.appName = 'CoMaps'
// I have Java 21 installed, but this doesn't work on MacOS.
java { //java {
toolchain { // toolchain {
languageVersion.set(JavaLanguageVersion.of(21)) // languageVersion.set(JavaLanguageVersion.of(17))
} // }
} //}
android { android {
namespace = 'app.organicmaps' namespace 'app.organicmaps'
// TODO: it should not be here, but in sdk/build.gradle. But for some reason it should be specified here as well.
ndkVersion = '28.2.13676358'
dependenciesInfo {
// Disables dependency metadata when building APKs (for IzzyOnDroid/F-Droid)
includeInApk = false
// Disables dependency metadata when building Android App Bundles (for Google Play)
includeInBundle = false
}
buildFeatures { buildFeatures {
dataBinding = true dataBinding = true
buildConfig = true buildConfig = true
} }
// Users are complaining that the app should be re-downloaded from the Play Store after changing the language.
bundle {
language {
enableSplit = false
}
}
// All properties are read from gradle.properties file // All properties are read from gradle.properties file
compileSdk = propCompileSdkVersion.toInteger() compileSdk propCompileSdkVersion.toInteger()
ndkVersion '27.2.12479018'
defaultConfig { defaultConfig {
versionCode = rootProject.ext.versionCode // Default package name is taken from the manifest and should be app.comaps
versionName = rootProject.ext.versionName def ver = getVersion()
versionCode = ver.V1
versionName = ver.V2
println('Version: ' + versionName) println('Version: ' + versionName)
println('VersionCode: ' + versionCode) println('VersionCode: ' + versionCode)
minSdk = propMinSdkVersion.toInteger() minSdk propMinSdkVersion.toInteger()
targetSdk = propTargetSdkVersion.toInteger() targetSdk propTargetSdkVersion.toInteger()
applicationId project.ext.appId applicationId project.ext.appId
buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"' buildConfigField 'String', 'SUPPORT_MAIL', '"android@comaps.app"'
// Should be customized in flavors. // Should be customized in flavors.
buildConfigField 'String', 'REVIEW_URL', '""' buildConfigField 'String', 'REVIEW_URL', '""'
base.archivesName = appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode externalNativeBuild {
def pchFlag = 'OFF'
if (project.hasProperty('pch')) pchFlag = 'ON'
ndk.debugSymbolLevel = 'full' def njobs = ''
if (project.hasProperty('njobs')) njobs = project.getProperty('njobs')
def enableVulkanDiagnostics = 'OFF'
if (project.hasProperty('enableVulkanDiagnostics')) {
enableVulkanDiagnostics = project.getProperty('enableVulkanDiagnostics')
}
def enableTrace = 'OFF'
if (project.hasProperty('enableTrace')) {
enableTrace = project.getProperty('enableTrace')
}
cmake {
cppFlags '-fexceptions', '-frtti'
// There is no sense to enable sections without gcc's --gc-sections flag.
cFlags '-fno-function-sections', '-fno-data-sections',
'-Wno-extern-c-compat'
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static',
"-DOS=$osName", '-DSKIP_TESTS=ON', '-DSKIP_TOOLS=ON', "-DUSE_PCH=$pchFlag",
"-DNJOBS=$njobs", "-DENABLE_VULKAN_DIAGNOSTICS=$enableVulkanDiagnostics",
"-DENABLE_TRACE=$enableTrace"
targets 'organicmaps'
}
}
// Use, for example, -Parm32 gradle parameter to build only for armeabi-v7a.
ndk {
abiFilters = new HashSet<>()
if (project.hasProperty('arm32') || project.hasProperty('armeabi-v7a')) {
abiFilters.add('armeabi-v7a')
}
if (project.hasProperty('arm64') || project.hasProperty('arm64-v8a')) {
abiFilters.add('arm64-v8a')
}
if (project.hasProperty('x86')) {
abiFilters.add('x86')
}
if (project.hasProperty('x86_64') || project.hasProperty('x64')) {
abiFilters.add('x86_64')
}
if (abiFilters.isEmpty()) {
abiFilters.add('armeabi-v7a')
abiFilters.add('arm64-v8a')
// For the emulator, chromebooks and some Intel Atom devices.
abiFilters.add('x86_64')
}
println('Building for ' + abiFilters + ' archs.')
}
setProperty('archivesBaseName', appName.replaceAll('\\s','') + '-' + defaultConfig.versionCode)
} }
flavorDimensions += 'default' flavorDimensions += 'default'
@@ -128,21 +192,23 @@ android {
splits.abi { splits.abi {
boolean enabled = project.hasProperty('splitApk') boolean enabled = project.hasProperty('splitApk')
println ('Create separate apks: ' + enabled) println ('Create separate apks: ' + enabled)
enable = enabled enable enabled
reset() reset()
include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64' include 'x86', 'armeabi-v7a', 'arm64-v8a', 'x86_64'
universalApk = true universalApk true
} }
lint { lint {
disable 'MissingTranslation' disable 'MissingTranslation'
// https://github.com/organicmaps/organicmaps/issues/3551 // https://github.com/organicmaps/organicmaps/issues/3551
disable 'MissingQuantity', 'UnusedQuantity' disable 'MissingQuantity', 'UnusedQuantity'
// https://github.com/organicmaps/organicmaps/issues/3550
disable 'ByteOrderMark'
// https://github.com/organicmaps/organicmaps/issues/1077 // https://github.com/organicmaps/organicmaps/issues/1077
disable 'CustomSplashScreen' disable 'CustomSplashScreen'
// https://github.com/organicmaps/organicmaps/issues/3610 // https://github.com/organicmaps/organicmaps/issues/3610
disable 'InsecureBaseConfiguration' disable 'InsecureBaseConfiguration'
abortOnError = true abortOnError true
} }
gradle.projectsEvaluated { gradle.projectsEvaluated {
@@ -201,29 +267,33 @@ android {
debug { debug {
applicationIdSuffix '.debug' // Allows to install debug and release builds together applicationIdSuffix '.debug' // Allows to install debug and release builds together
versionNameSuffix '-debug' versionNameSuffix '-debug'
jniDebuggable true // Enable jni debug build
zipAlignEnabled true zipAlignEnabled true
signingConfig = signingConfigs.debug signingConfig signingConfigs.debug
resValue 'string', 'app_name', 'CoMaps Debug' resValue 'string', 'app_name', 'CoMaps Debug'
// Do not generate separate debug symbols for debug apps, because we don't distribute them.
ndk.debugSymbolLevel = 'none'
} }
release { release {
if (taskName.contains('release')) { if (taskName.contains('release')) {
if (secureReleasePropertiesFileExists) { if (secureReleasePropertiesFileExists) {
println('Using RELEASE signing keys from secure.properties.release') println('Using RELEASE signing keys from secure.properties.release')
signingConfig = signingConfigs.release signingConfig signingConfigs.release
} else { } else {
println('NO RELEASE signing keys found') println('NO RELEASE signing keys found')
println('Using DEBUG signing keys') println('Using DEBUG signing keys')
signingConfig = signingConfigs.debug signingConfig signingConfigs.debug
} }
} }
minifyEnabled true minifyEnabled true
shrinkResources = true shrinkResources true
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin. // Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
// To learn more, go to the documentation section about R8 configuration files. // To learn more, go to the documentation section about R8 configuration files.
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue 'string', 'app_name', project.ext.appName resValue 'string', 'app_name', project.ext.appName
// Full size symbols are too big for Google, 217mb aab vs 95mb.
ndk.debugSymbolLevel = 'symbol_table'
} }
beta { beta {
@@ -232,27 +302,37 @@ android {
if (taskName.contains('beta')) { if (taskName.contains('beta')) {
if (secureTestPropertiesFileExists) { if (secureTestPropertiesFileExists) {
println('Using TEST signing keys from secure.properties.test') println('Using TEST signing keys from secure.properties.test')
signingConfig = signingConfigs.test signingConfig signingConfigs.test
} else { } else {
println('NO TEST signing keys found') println('NO TEST signing keys found')
println('Using DEBUG signing keys') println('Using DEBUG signing keys')
signingConfig = signingConfigs.debug signingConfig signingConfigs.debug
} }
} }
minifyEnabled true minifyEnabled true
shrinkResources = true shrinkResources true
// Includes the default ProGuard rules files that are packaged with the Android Gradle plugin. // Includes the default ProGuard rules files that are packaged with the Android Gradle plugin.
// To learn more, go to the documentation section about R8 configuration files. // To learn more, go to the documentation section about R8 configuration files.
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
matchingFallbacks = ['release'] // use dependencies of "release" build type matchingFallbacks = ['release'] // use dependencies of "release" build type
resValue 'string', 'app_name', 'CoMaps Test' resValue 'string', 'app_name', 'CoMaps Test'
// Full size symbols are too big for Google, 217mb aab vs 95mb.
ndk.debugSymbolLevel = 'symbol_table'
}
}
externalNativeBuild {
cmake {
version '3.22.1+'
buildStagingDirectory './nativeOutputs'
path '../../CMakeLists.txt'
} }
} }
// We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk. // We don't compress these extensions in assets/ because our random FileReader can't read zip-compressed files from apk.
// TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers. // TODO: Load all minor files via separate call to ReadAsString which can correctly handle compressed files in zip containers.
androidResources { androidResources {
ignoreAssetsPattern = '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~' ignoreAssetsPattern '!.svn:!.git:!.DS_Store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~'
noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj'] noCompress = ['txt', 'bin', 'html', 'png', 'json', 'mwm', 'ttf', 'sdf', 'ui', 'config', 'csv', 'spv', 'obj']
localeFilters += [ localeFilters += [
"af", "af",
@@ -309,16 +389,14 @@ android {
} }
compileOptions { compileOptions {
coreLibraryDesugaringEnabled = true coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_21 sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_21 targetCompatibility JavaVersion.VERSION_17
} }
} }
dependencies { dependencies {
implementation project(':sdk')
coreLibraryDesugaring libs.android.tools.desugar coreLibraryDesugaring libs.android.tools.desugar
// Google Play Location Services // Google Play Location Services
@@ -355,7 +433,8 @@ dependencies {
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture // Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
// https://github.com/organicmaps/organicmaps/issues/6106 // https://github.com/organicmaps/organicmaps/issues/6106
implementation libs.google.guava implementation libs.google.guava
implementation libs.appdevnext.androidchart implementation libs.devnullorthrow.mpandroidchart
implementation libs.jcip.annotations
// Test Dependencies // Test Dependencies
androidTestImplementation libs.androidx.test.junit androidTestImplementation libs.androidx.test.junit
@@ -363,6 +442,10 @@ dependencies {
testImplementation libs.mockito.core testImplementation libs.mockito.core
} }
tasks.withType(JavaCompile) {
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
}
android.applicationVariants.all { variant -> android.applicationVariants.all { variant ->
def authorityValue = variant.applicationId + ".provider" def authorityValue = variant.applicationId + ".provider"
def authority = "\"" + authorityValue + "\"" def authority = "\"" + authorityValue + "\""
@@ -410,7 +493,3 @@ huaweiPublish {
} }
} }
} }
tasks.withType(JavaCompile).configureEach {
options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/bg_app_icon_test"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_test"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/bg_app_icon_debug"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_debug"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -1 +0,0 @@
CoMaps - Mapas ensin conexón con privacidá

View File

@@ -1 +0,0 @@
Лесна навигация - Открийте повече от вашето пътуване - Подкрепен от общността

View File

@@ -1 +0,0 @@
CoMaps - Хайкинг, Велосипед, Пътуване без Интернет

View File

@@ -1 +0,0 @@
মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত

View File

@@ -1 +0,0 @@
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং

View File

@@ -1 +0,0 @@
Navegació intuïtiva - Descobreix el teu camí - El poder de la comunitat

View File

@@ -1 +0,0 @@
CoMaps - Camina, pedala o condueix privadament

View File

@@ -6,12 +6,12 @@ Můžete se zde také připojit ke komunitě pomáhat s vytvářením nejlepší
• Poskytujte zpětnou vazbu a nahlašujte problémy • Poskytujte zpětnou vazbu a nahlašujte problémy
• Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap • Aktualizujte mapová data v aplikaci nebo na webu OpenStreetMap
<b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline. <b>Zaměřené na offline použití</b>: Plánujte a navigujte své cesty do zahraničí bez nutnosti mobilních dat, hledejte body na vzdálených túrách apod. Všechny funkce aplikace jsou navrženy tak, aby fungovaly offline.
<b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam. <b>S ohledem na soukromí</b>: Aplikace je navržená s důrazem na soukromí neidentifikuje lidi, nesleduje vás a nesbírá osobní údaje. Bez reklam.
<b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují. <b>Jednoduché a vyladěné</b>: Základní, snadno použitelné funkce, které prostě fungují.
<b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu. <b>Šetří vaši baterii a místo</b>: Nevybíjí vaší baterii, jako ostatní navigační aplikace. Kompaktní mapy šetří cenné místo ve vašem telefonu.
<b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi. <b>Bezplatné a vytvořené komunitou</b>: S vytvářením aplikace pomáhají lidé, jako jste vy, přidáváním míst do projektu OpenStreetMap, testováním a poskytováním zpětné vazby k funkcím a přispíváním svými vývojářskými schopnostmi a penězi.
<b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b> <b>Otevřené a transparentní rozhodování a nakládání s financemi, neziskovost a plně otevřený zdrojový kód.</b>
<b>Hlavní funkce</b>: <b>Hlavní funkce</b>:
• Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google • Stahovatelné podrobné mapy s místy, která nenajdete ani v Mapách Google

View File

@@ -1 +1 @@
Jednoduchá navigace v mapě Objevte více na své cestě Vyvíjeno komunitou Jednoduchá navigace v mapě - Objevte více na své cestě Vyvíjeno komunitou

View File

@@ -1 +0,0 @@
Nem kortnavigation - Oplev mere af din rejse - Drevet af fællesskabet

View File

@@ -1 +0,0 @@
CoMaps - vandr, cykl og kør offline med privatliv

View File

@@ -1,4 +1,4 @@
Eine von der Community betriebene, kostenlose Open-Source Karten-App, die auf OpenStreetMap Daten basiert. Transparent und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, die wiederum ein Fork/Abspaltung von Maps.Me ist. Eine von der Community betriebene, kostenlose Open-Source Karten-App, die auf OpenStreetMap Daten basiert. Transparent, datensparsam und nicht gewinnorientiert. CoMaps ist ein Fork/Abspaltung von Organic Maps, die wiederum ein Fork/Abspaltung von Maps.Me ist.
Lese mehr über die Gründe und Ziele des Projektes unter <b><i>codeberg.org/comaps</i></b>. Lese mehr über die Gründe und Ziele des Projektes unter <b><i>codeberg.org/comaps</i></b>.
Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
@@ -28,5 +28,5 @@ Werde Teil der Community und hilf mit, die beste Karten-App zu entwickeln
• Dunkler Modus für die Nutzung bei Nacht • Dunkler Modus für die Nutzung bei Nacht
• Kartenbearbeitung direkt in der App mit einem einfachen Editor • Kartenbearbeitung direkt in der App mit einem einfachen Editor
<b>Entdecke die Unabhängigkeit</b> <b>Freiheit beginnt hier</b>
Entdecke deine Reise navigiere in der Welt mit Datenschutz! Entdecke deine Reise navigiere in der Welt mit Datenschutz!

View File

@@ -1,8 +1,6 @@
• OpenStreetMap-Daten vom 4. November • OpenStreetMap-Daten vom 22. Juni
Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen Optionale automatische Backups von Lesezeichen & Tracks
Informationen zu Steckdosen an EV-Ladestationen Neue 100m-Höhenlinien für Regionen die vorher gröbere/keine Isolinien hatten
Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen Vegetation & Spielplätze werden früher angezeigt, neue Farben für Campingplätze & andere Einrichtungen
Verbesserungen bei der Suche Pfade & Tracks werden standardmäßig bei höherem Zoom angezeigt, Outdoor-Stil für Detailübersicht
Behebung eines Absturzes bei der Suche Aktion des linken Button nichtm mehr im Hamburger-Menü, stattdessen werden "Über & Hilfe" dort angezeigt
• Verbesserte Sprachführung während der Navigation
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,8 +1,7 @@
• OpenStreetMap data as of November 4 • OpenStreetMap data as of June 22
Recategorized map icons including some new colors for entertainment, sports and other businesses a setting for automatic bookmarks and tracks backup
Display info about available sockets on charging stations added 100m-step altitude isolines to all regions that had worse or no isolines
Added bandstands, backless benches and loungers display vegetation and playground color fills earlier, add fills to camp sites and some amenities
New icons for different sport centres, event venues, massage salons, guest houses and some disused businesses paths & tracks appear on the map later by default - still appear earlier in the outdoor style
Multiple search improvements and crash fix hide active custom button action from the hamburger menu, move there About & Help from the settings
Improved voice guidance during navigation update map transport icons
Check our Codeberg release notes for more changes!

View File

@@ -1,65 +0,0 @@
Una aplicación de mapas gratuita y de código abierto liderada por la comunidad, basada en los datos de OpenStreetMap y reforzada con un compromiso con la transparencia, la privacidad y la ausencia de fines de lucro. CoMaps es un fork o derivado de Organic Maps, que a su vez es un fork de Maps.ME.
<br><br>
Lee más sobre los motivos del proyecto y su dirección en <b><i>codeberg.org/comaps</i></b>.
<br><br>
Únete allí a la comunidad y ayuda a crear la mejor app de mapas
• Usa la aplicación y corre la voz sobre ella
• Envía comentarios y reporta problemas
• Actualiza los datos del mapa en la app o en el sitio web de OpenStreetMap
<br><br>
‣ <b>Enfocada en el uso sin conexión</b>: Planifica y navega tus viajes sin necesidad de conexión móvil, busca puntos de paso en rutas remotas, etc. Todas las funciones están diseñadas para funcionar sin conexión.
‣ <b>Respeta tu Privacidad</b>: La app está diseñada pensando en tu privacidad: no identifica personas, no rastrea y no recoge datos personales. Sin publicidad.
‣ <b>Sencilla y Pulida</b>: funciones esenciales fáciles de usar que simplemente funcionan.
‣ <b>Ahorra Batería y Espacio</b>: No consume la batería como otras apps de navegación. Los mapas compactos ahorran espacio valioso en tu teléfono.
‣ <b>Gratuita y Creada por la Comunidad</b>: Personas como tú ayudaron a construir la app añadiendo lugares a OpenStreetMap, probando funciones, dando opiniones y contribuyendo con desarrollo o financiación.
‣ <b>Toma de decisiones y finanzas abiertas y transparentes, sin ánimo de lucro y completamente de código abierto.</b>
<br><br>
<b>Funciones Principales</b>:
• Mapas detallados descargables con lugares que no aparecen en Google Maps
• Modo exterior con rutas de senderismo destacadas, campings, fuentes de agua, picos, curvas de nivel, etc.
• Caminos peatonales y carriles bici
• Puntos de interés como restaurantes, gasolineras, hoteles, tiendas, lugares turísticos y muchos más
• Búsqueda por nombre, dirección o categoría de punto de interés
• Navegación con indicaciones por voz para caminar, ir en bici o conducir
• Guarda tus lugares favoritos con un solo toque
• Artículos de Wikipedia sin conexión
• Capa de transporte subterráneo y rutas
• Grabación de rutas
• Exporta e importa favoritos y rutas en formatos KML, KMZ y GPX
• Modo oscuro para usar de noche
• Mejora los datos del mapa para todos usando un editor básico integrado
<br><br>
<b>La Libertad Está Aquí</b>
Descubre tu camino, navega el mundo con privacidad y con la comunidad como prioridad.

View File

@@ -1,7 +1,6 @@
Datos OSM del 04/11 datos de OpenStreetMap a 22 de junio
Iconos del mapa recategorizados, incluyendo nuevos colores añadido ajuste para la copia de seguridad automática de marcadores y trazas
Visualización de información sobre enchufes disponibles en estaciones de recarga añadidas isolíneas de 100 m a las regiones que tenían isolíneas peores o no tenían isolíneas
Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados se muestra antes la vegetación y zonas de juego, añadidas áreas a campings y otros servicios
Varias mejoras y correcciones de errores en la búsqueda los senderos y pistas aparecen más tarde - siguen igual en estilo de outdoors
Mejora en la orientación por voz durante la navegación se oculta botón personalizado del menú y se mueve allí Acerca de y Ayuda desde los ajustes
Más detalles en Codeberg

View File

@@ -1 +0,0 @@
Navegación sencilla - Descubre más en tu camino - Creado por la comunidad

View File

@@ -1 +0,0 @@
CoMaps - Senderismo, ciclismo y conducción offline

View File

@@ -24,7 +24,7 @@ Sartu komunitatean eta lagundu maparik onena aplikatzen
• Lineaz kanpoko Wikipedia artikuluak • Lineaz kanpoko Wikipedia artikuluak
• Metroaren garraio geruza eta jarraibideak • Metroaren garraio geruza eta jarraibideak
• Arrastoen grabazioa • Arrastoen grabazioa
Markagailuak eta arrastoak esportatu eta inportatu KML, KMZ, GPX formatuetan Laster-markak eta ibilbideak esportatu eta inportatu KML, KMZ, GPX formatuetan
• Gauean erabiltzeko modu iluna • Gauean erabiltzeko modu iluna
• Hobetu mapako datuak guztiontzat oinarrizko editore integratua erabiliz • Hobetu mapako datuak guztiontzat oinarrizko editore integratua erabiliz

View File

@@ -1 +0,0 @@
ناوبری آسان نقشه - کشف بیشتر از سفر شما - توسط جامعه

View File

@@ -1 +0,0 @@
CoMaps - کوه‌نوردی، دوچرخه‌سواری و رانندگی آفلاین

View File

@@ -1,34 +1,32 @@
Yhteisön johtama vapaa ja avoimeen lähdekoodiin perustuva karttasovellus, jonka karttadata perustuu OpenStreetMap:n avoimeen dataan. Sovelluksessa painottuu vahva sitoutuminen läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomaan toimintaan. CoMaps on haarautunut Organic Maps:sta, joka taas omalta osaltaan on haarautunut Maps.ME:stä. Yhteisövetoinen, ilmainen ja avoimeen lähdekoodiin perustuva karttasovellus, jonka pohjalla käytetään OpenStreetMapin avointa karttadataa. Sovelluksen kehityksessä on sitouduttu läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomuuteen. CoMapsin projekti on haarautunut Organic Mapsista, joka taas on haarautunut aiemmin Maps.ME:stä
Lue tarkemmin projektin syistä ja sen suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>. Lue lisää projektin tavotteista ja suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
Liity yhteisöön ja auta kehittämään parasta karttasovellusta Liity yhteisöön ja auta kehittämään paras saatavilla oleva karttasovellus
• Käytä sovellusta ja levitä siitä sanaa • Käytä sovellusta ja kerro siitä myös muille
• Anna palautetta ja raportoi ongelmista • Anna palautetta ja raportoi ongelmia
• Päivitä karttadataa sovelluksessa tai OpenStreetMap:n verkkosivuilla • Päivitä karttoja, joko sovelluksessa tai OpenStreetMapin verkkosivuilla
‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi matkasi ilman verkkoyhteyttä. Etsi reittipisteitä retkilläsi. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä. ‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi ulkomailla ilman mobiiliverkkoja. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä.
‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksityisyyttä silmälläpitäen. Sovellu ei tunnista ihmisä, seuraa toimintaasi, eikä kerää henkilökohtaisia tietojasi. Mainosvapaa. ‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksilön yksityisyys silmälläpitäen. Sovellus ei tunnista tai kerää tietoja sinusta. Mainosvapaa.
‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää. ‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää.
‣ <b>Säästää akkua ja tilaa</b>: Ei kuluta akkua, kuten toiset karttasovellukset. Kompaktit kartat säästävät tilaa puhelimessasi. ‣ <b>Säästä akkua ja tallennustilaa</b>: Ei kuluta akkua, kuten muut navigointisovellukset. Kompaktit kartat säästävät arvokasta tallennustilaa puhelimessasi.
‣ <b>Ilmainen ja yhteisön rakentama</b>: Ihmiset, kuten sinä ovat auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit auttaa myös kehittämällä sovellusta ja lahjoittamalla sovelluskehitykseen. ‣ <b>Ilmainen ja yhteisön luoma</b>: Vapaaehtoiset, kuten sinä olette auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit myös auttaa kehittämällä ominaisuuksia ja lahjoittamalla sovelluskehitykseen
‣ <b>Avoin ja läpinäkyvä päätöksenteko ja rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b> ‣ <b>Avoin ja läpinäkyvä päätöksenteko sekä rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
<b>Tärkeimmät ominaisuudet</b>: <b>Tärkeimmät ominaisuudet</b>:
<ul> • Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta
<li>Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta</li> • Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.
<li>Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.</li> • Kävely- ja pyörätiet
<li>Kävely- ja pyörätiet</li> • Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta
<li>Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta</li> • Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla
<li>Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla</li> • Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa
<li>Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa</li> • Tallenna suosikkipaikkasi yhdellä napautuksella
<li>Tallenna suosikkipaikkasi yhdellä napautuksella</li> • Offline Wikipedia-artikkelit
<li>Offline Wikipedia-artikkelit</li> • Maanalaisen liikenteen tasot ja ohjeet
<li>Maanalaisen liikenteen tasot ja ohjeet</li> • Reittien tallennus
<li>Reittien tallennus</li> • Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa
<li>Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa</li> • Tumma tila iltaa ja yötä varten
<li>Tumma tila iltaa ja yötä varten</li> • Paranna karttadataa kaikille sisäänrakennetulla editorilla
<li>Paranna karttadataa kaikille sisäänrakennetulla editorilla</li>
</ul>
<b>Vapaus on täällä</b> <b>Vapaus on täällä</b>
Löydä matkasi, navigoi maailmassa yksityisyyden ja yhteisön tukemana! Löydä matkasi ja navigoi maailmalla yksityisyyden ja yhteisön tukemana!

View File

@@ -1 +1 @@
CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä CoMaps - Navigoi ilman verkkoyhteyttä yksityisesti

View File

@@ -1,8 +1,6 @@
• Données OpenStreetMap au 4 novembre • Données OpenStreetMap du 22 juin
Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux Sauvegarde automatique des signets et traces GPS en local
• Affichage des prises sur les bornes électriques • Ajout des courbes d'altitude avec un précision de 100 mètres dans toutes les régions qui avaient peu de courbes ou aucune
• Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux • Ajustements des styles notamment sur la végétation, les aires de jeu et les chemins
• Multiple améliorations dans la recherche • Masque laction active du bouton personnalisé dans le menu hamburger
• Correction d'un plantage dans la recherche • Correction de certains plantages et bugs
• Amélioration de la synthèse vocale durant la navigation
Plus d'informations sur notre Codeberg

View File

@@ -1 +1 @@
Navigation facile - Vivez de grands voyages - Propulsé par la communauté Navigation facile - Découvrez plus lors de votre voyage - Fait par la communauté

View File

@@ -1,32 +0,0 @@
Aplicación de mapas gratuíta, de código aberto e xestionada pola comunidade, obtén os datos desde OpenStreetMap e co compromiso reforzado coa transparencia, privacidade e non ter o beneficio económico como obxectivo. CoMaps é unha bifurcación ou derivada de Organic Maps, que pola súa parte ven sendo unha bifurcación de Maps.ME.
Vai a <b><i>codeberg.org/comaps</i></b> e coñece as razóns da necesidade deste proxecto e as decisións tomadas.
Únete alí á comunidade e axuda a que teñamos a mellor aplicación de mapas
• Usa a aplicación e dille a outras persoas que o fas
• Informa de fallos e publica túa experiencia
• Actualiza os datos do mapa na aplicación ou no sitio web OpenStreetMap
‣ <b>Sen conexión de datos</b>: planea a viaxe e sigue a ruta sen precisar unha conexión á rede móbil, busca lugares relevantes nas andainas máis longas, etc. Todas as características da aplicación están deseñadas para funcionar sen precisar conexión de datos.
‣ <b>Respecto pola privacidade</b>: a aplicación está deseñada coa privacidade en primeiro plano - non identifica ás persoas, non te segue, non recolle información sobre ti. Non ten publicidade.
‣ <b>Simple e organizada</b>: características esenciais, fáciles de usar e que funcionan.
‣ <b>Aforra batería e espazo</b>: non esgota a batería como outras aplicacións de navegación. Os mapas compactos aforran espazo na memoria do dispositivo.
‣ <b>Gratuíta e feita pola comunidade</b>: persoas coma ti que axudan a crear a aplicación engadindo lugares en OpenStreetMap, probando novas características e dando a súa opinión, colaborando ao seu desenvolvemento con código ou financiamento.
‣ <b>Proceso de toma de decisións Aberto e Transparente para os temas económicos, Sen ánimo de lucro e totalmente de Código Aberto</b>
<b>Características principais</b>:
• Mapas detallados descargables con lugares que non están dispoñibles en Google Maps
• Modo para actividades en exterior con camiños para andainas, lugares para acampar, fontes de auga, picos dos montes, curvas de nivel, etc
• Rutas a pé e en bicicleta
• Puntos de interese como restaurantes, gasoliñeiras, hoteis, tendas, miradores e moitos máis
• Busca polo nome ou polo enderezo ou por categoría do punto de interese
• Navegación con anuncios por voz para camiñar, ir en bicicleta ou conducir
• Marca os lugares favoritos cun só toque
• Artigos da Wikipedia sen conexión
• Mapas do transporte por Metro
• Gravación das rutas
• Exportación e Importación de marcadores e rutas nos formatos KML, KMZ e GPX
• Modo escuro para a noite
• Contribúe a mellorar o mapa para todas as persoas usando o editor básico incluído
<b>Aquí es Libre</b>
Atopa o teu camiño, navega polo mundo con privacidade e coa comunidade como prioridade!

View File

@@ -1 +1 @@
CoMaps - Pješačite, biciklirajte, vozite Offline CoMaps - Pješačite, biciklirajte, vozite Offline i privatno

View File

@@ -1,32 +0,0 @@
Egy közösség által vezetett, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap adatain alapul, és amelynek alapelvei a átláthatóság, az adatvédelem és a nonprofit működés. A CoMaps az Organic Maps alkalmazás egyik változata, amely viszont a Maps.ME alkalmazás egyik változata.
A projekt előzményeiről és fejlesztési irányáról bővebben a <b><i>codeberg.org/comaps</i></b> oldalon olvashat.
Csatlakozzon a közösséghez, és segítsen a legjobb térképalkalmazás létrehozásában
• Használja az alkalmazást, és terjessze a hírt róla
• Adjon visszajelzést, és jelentsen problémákat
• Frissítse a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalon
‣ <b>Offline</b>: Tervezze meg és navigálja külföldi utazását mobilszolgáltatás nélkül, keressen útpontokat távoli túrákon stb. Az alkalmazás összes funkciója úgy van kialakítva, hogy offline is működjön.
‣ <b>A magánélet tiszteletben tartása</b>: Az alkalmazás a magánélet tiszteletben tartásával lett kialakítva nem azonosítja az embereket, nem követi nyomon őket és nem gyűjt személyes adatokat. Reklámmentes.
‣ <b>Egyszerű és kifinomult</b>: alapvető, könnyen használható funkciók, amelyek egyszerűen működnek.
‣ <b>Takarékos az akkumulátorral és a tárhellyel</b>: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A kompakt térképek értékes helyet takarítanak meg a telefonon.
‣ <b>Ingyenes és a közösség által fejlesztett</b>: Az Önhöz hasonló emberek segítettek az alkalmazás fejlesztésében azzal, hogy helyeket adtak hozzá az OpenStreetMaphez, tesztelték és visszajelzéseket adtak a funkciókról, valamint fejlesztői ismereteikkel és pénzzel is hozzájárultak a fejlesztéshez.
‣ <b>Nyílt, átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú.
<b>Főbb jellemzők</b>:
• Letölthető részletes térképek olyan helyekkel, amelyek nem érhetők el a Google Maps-en
• Kültéri mód kiemelt túraútvonalakkal, kempingekkel, vízforrásokkal, csúcsokkal, szintvonalakkal stb.
• Gyalogos és kerékpáros útvonalak
• Érdekes helyek, például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok más
• Keresés név, cím vagy érdekes hely kategória alapján
• Hangos navigáció gyalogos, kerékpáros vagy autós utazáshoz
• Kedvenc helyek könyvjelzővel egyetlen érintéssel
• Offline Wikipedia cikkek
• Metróhálózat és útvonaltervezés
• Útvonalrögzítés
• Könyvjelzők, útvonalak exportálása és importálása KML, KMZ, GPX formátumokban
• Sötét mód az éjszakai használathoz
• A beépített alapszerkesztővel mindenki javíthatja a térképadatokat
<b>A szabadság itt van</b>
Fedezze fel utazását, navigáljon a világban, ahol az adatvédelem és a közösség az első!

View File

@@ -1 +0,0 @@
Egyszerű térképnavigáció Fedezze fel utazását A közösség támogatásával

Some files were not shown because too many files have changed in this diff Show More