Compare commits
2 commits
master
...
singleton_
Author | SHA1 | Date | |
---|---|---|---|
|
2044fa25c6 | ||
|
e1a09e48c4 |
2306 changed files with 3741 additions and 476623 deletions
103
.github/actions/run_tests/action.yml
vendored
103
.github/actions/run_tests/action.yml
vendored
|
@ -1,85 +1,90 @@
|
|||
name: Run tests with coverage
|
||||
description: Runs all mapnik tests with coverage
|
||||
name: "Run tests with coverage"
|
||||
description: "Runs all mapnik tests with coverage"
|
||||
inputs:
|
||||
cmake-preset:
|
||||
description: The used CMake preset
|
||||
description: "the used cmake preset"
|
||||
required: true
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Set PROJ_LIB
|
||||
shell: bash
|
||||
- name: Set proj enviroment
|
||||
shell: "pwsh"
|
||||
run: |
|
||||
cmake --preset ${{ inputs.cmake-preset }} -N -L | grep -o "PROJ_LIB=.*" >> ${GITHUB_ENV}
|
||||
|
||||
- name: Set TEST_WRAPPER (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: bash
|
||||
run: |-
|
||||
echo "TEST_WRAPPER=OpenCppCoverage \
|
||||
--cover_children \
|
||||
--export_type binary \
|
||||
--modules '*.input' \
|
||||
--modules '*libmapnik*' \
|
||||
--modules 'mapnik*.exe' \
|
||||
--quiet \
|
||||
--sources '${{ github.workspace }}' \
|
||||
--" >> ${GITHUB_ENV}
|
||||
$out = cmake --preset ${{ inputs.cmake-preset }} -N -L
|
||||
$proj_lib = $out -match "PROJ_LIB=*"
|
||||
echo ("PROJ_LIB=" + $proj_lib.Substring(11)) >> $env:GITHUB_ENV
|
||||
|
||||
- name: Test
|
||||
shell: bash
|
||||
shell: "bash"
|
||||
env:
|
||||
UPDATE: 1
|
||||
UPDATE: "1"
|
||||
run: |
|
||||
${TEST_WRAPPER:-} ctest --preset ${{ inputs.cmake-preset }}
|
||||
if [ "$RUNNER_OS" == "Windows" ]; then
|
||||
OpenCppCoverage --modules *libmapnik* --modules mapnik*.exe --modules *.input --sources ${{ github.workspace }} --export_type binary --cover_children -- ctest --preset ${{ inputs.cmake-preset }}
|
||||
else
|
||||
ctest --preset ${{ inputs.cmake-preset }}
|
||||
fi
|
||||
|
||||
- name: Test visuals
|
||||
- name: Test visuals (windows)
|
||||
continue-on-error: true
|
||||
working-directory: build/out
|
||||
shell: bash
|
||||
shell: "pwsh"
|
||||
if: runner.os == 'Windows'
|
||||
run: OpenCppCoverage --modules *libmapnik* --modules mapnik*.exe --modules *.input --sources ${{ github.workspace }} --export_type binary --input_coverage=${{ github.workspace }}/ctest.cov --cover_children -- .\mapnik-test-visual.exe -j (Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors --output-dir ./visual-test-result
|
||||
|
||||
- name: Test visuals (linux & mac)
|
||||
continue-on-error: true
|
||||
working-directory: build/out
|
||||
shell: "bash"
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
${TEST_WRAPPER:-} ./mapnik-test-visual -j ${CTEST_PARALLEL_LEVEL} --output-dir visual-test-result
|
||||
if [ "$RUNNER_OS" == "Linux" ]; then
|
||||
./mapnik-test-visual -j $(nproc) --output-dir ./visual-test-result
|
||||
else
|
||||
./mapnik-test-visual -j $(sysctl -n hw.logicalcpu) --output-dir ./visual-test-result
|
||||
fi
|
||||
|
||||
- name: Pack visual test results
|
||||
working-directory: build/out
|
||||
shell: bash
|
||||
shell: "pwsh"
|
||||
run: tar cfvz visual-test-results.tar.gz ./visual-test-result
|
||||
|
||||
- name: Generate run guid
|
||||
id: run-guid
|
||||
shell: "pwsh"
|
||||
run: |
|
||||
tar -vzcf visual-test-results.tar.gz visual-test-result
|
||||
$guid = New-Guid
|
||||
echo ("GUID=" + $guid.toString()) >> $env:GITHUB_OUTPUT
|
||||
|
||||
- name: Upload visual test results
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ inputs.cmake-preset }}-visual-tests-${{ github.sha }}
|
||||
name: ${{ inputs.cmake-preset }}-visual-tests-${{ steps.run-guid.outputs.GUID }}
|
||||
path: build/out/visual-test-results.tar.gz
|
||||
|
||||
- name: Run Benchmarks (Linux & macOS)
|
||||
- name: Run Benchmarks
|
||||
working-directory: build/out
|
||||
if: runner.os != 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
./run_benchmarks
|
||||
shell: "pwsh"
|
||||
run: ./run_benchmarks
|
||||
|
||||
- name: Collect coverage (Linux & macOS)
|
||||
- name: Collect coverage (linux & macos)
|
||||
working-directory: build
|
||||
if: runner.os != 'Windows'
|
||||
shell: bash
|
||||
shell: "bash"
|
||||
run: |
|
||||
if [ "${RUNNER_OS}" == "macOS" ]; then
|
||||
LCOV_EXTRA_OPTIONS="--ignore-errors count,gcov,inconsistent,range,unused --keep-going"
|
||||
fi
|
||||
lcov ${LCOV_EXTRA_OPTIONS:-} --directory . --capture --output-file coverage.info
|
||||
lcov ${LCOV_EXTRA_OPTIONS:-} --remove coverage.info '/usr/*' '*/vcpkg_installed/*' '/.cache/*' '*/test/*' --output-file coverage.info
|
||||
lcov ${LCOV_EXTRA_OPTIONS:-} --list coverage.info
|
||||
lcov --directory . --capture --output-file coverage.info
|
||||
lcov --remove coverage.info '/usr/*' '*/vcpkg_installed/*' '/.cache/*' '*/test/*' --output-file coverage.info
|
||||
lcov --list coverage.info
|
||||
|
||||
- name: Upload coverage to Codecov (Linux & macOS)
|
||||
- name: Upload coverage to Codecov (linux & macos)
|
||||
if: runner.os != 'Windows'
|
||||
uses: codecov/codecov-action@v4
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: build/coverage.info
|
||||
|
||||
- name: Upload coverage to Codecov (Windows)
|
||||
- name: Upload coverage to Codecov (windows)
|
||||
if: runner.os == 'Windows'
|
||||
uses: codecov/codecov-action@v4
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ctest.cov,build/out/mapnik-test-visual.cov
|
||||
files: build/out/mapnik-test-visual.cov
|
||||
|
|
50
.github/actions/setup_vcpkg/action.yml
vendored
Normal file
50
.github/actions/setup_vcpkg/action.yml
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
name: "Setup vcpkg"
|
||||
description: "Sets up vcpkg"
|
||||
inputs:
|
||||
vcpkg-sha:
|
||||
description: "vcpkg git sha to use"
|
||||
required: true
|
||||
nuget-source:
|
||||
description: "The nuget json"
|
||||
required: true
|
||||
nuget-username:
|
||||
description: "The username for the nuget repository"
|
||||
required: true
|
||||
nuget-pat:
|
||||
description: "The PAT for the nuget repository"
|
||||
required: true
|
||||
mono:
|
||||
description: "mono exec"
|
||||
required: true
|
||||
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: checkout vcpkg
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: "microsoft/vcpkg"
|
||||
ref: ${{ inputs.vcpkg-sha }}
|
||||
path: vcpkg
|
||||
|
||||
- name: "Setup vcpkg"
|
||||
shell: bash
|
||||
run: ./vcpkg/bootstrap-vcpkg.sh
|
||||
|
||||
- name: "Setup NuGet Credentials"
|
||||
shell: "bash"
|
||||
run: >
|
||||
${{ inputs.mono }} `./vcpkg/vcpkg fetch nuget | tail -n 1`
|
||||
sources add
|
||||
-source "${{ inputs.nuget-source }}"
|
||||
-storepasswordincleartext
|
||||
-name "GitHub"
|
||||
-username "${{ inputs.nuget-username }}"
|
||||
-password "${{ inputs.nuget-pat }}"
|
||||
|
||||
- name: "Setup NuGet apikey"
|
||||
shell: "bash"
|
||||
run: >
|
||||
${{ inputs.mono }} `./vcpkg/vcpkg fetch nuget | tail -n 1`
|
||||
setapikey "${{ inputs.nuget-pat }}" -Source "${{ inputs.nuget-source }}"
|
144
.github/workflows/build_and_test.yml
vendored
144
.github/workflows/build_and_test.yml
vendored
|
@ -9,126 +9,84 @@ on:
|
|||
- "no-ci-*"
|
||||
|
||||
env:
|
||||
VCPKG_BINARY_SOURCES: clear;x-gha,readwrite
|
||||
VCPKG_RELEASE: 2024.06.15
|
||||
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite"
|
||||
VCPKG_NUGET_REPOSITORY: https://github.com/mathisloge/vcpkg-nuget.git
|
||||
|
||||
jobs:
|
||||
checkSource:
|
||||
name: Check Source Code
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.10"
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
python-version: '3.10'
|
||||
- uses: pre-commit/action@v3.0.0
|
||||
|
||||
buildAndTest:
|
||||
name: >-
|
||||
Build & Test
|
||||
(${{ matrix.os }})
|
||||
(C++ ${{ matrix.cxx-standard }})
|
||||
${{ startsWith(matrix.os, 'macos-') && (matrix.os == 'macos-14' && '(ARM64)' || '(AMD64)') || '' }}
|
||||
name: Build and Test
|
||||
needs: checkSource
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- macos-14
|
||||
- ubuntu-22.04
|
||||
- windows-2022
|
||||
cxx-standard:
|
||||
- 17
|
||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||
memory-mapped: ["OFF", "ON"]
|
||||
static-build: ["OFF", "ON"]
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
mono: mono
|
||||
- os: macos-latest
|
||||
mono: mono
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Mapnik
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Checkout vcpkg
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: vcpkg
|
||||
ref: ${{ env.VCPKG_RELEASE }}
|
||||
repository: microsoft/vcpkg
|
||||
|
||||
- name: Export GitHub Actions cache environment variables
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
|
||||
- name: Install required system packages
|
||||
- name: "Install required system packages"
|
||||
shell: bash
|
||||
run: |
|
||||
if [ "${RUNNER_OS}" == "Linux" ]; then
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
gperf \
|
||||
lcov \
|
||||
libxxf86vm-dev \
|
||||
ninja-build \
|
||||
postgresql-client
|
||||
elif [ "${RUNNER_OS}" == "macOS" ]; then
|
||||
brew install \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
automake \
|
||||
lcov \
|
||||
libtool \
|
||||
ninja \
|
||||
vcpkg
|
||||
elif [ "${RUNNER_OS}" == "Windows" ]; then
|
||||
choco install \
|
||||
ninja \
|
||||
OpenCppCoverage
|
||||
if [ "$RUNNER_OS" == "Windows" ]; then
|
||||
choco install ninja OpenCppCoverage
|
||||
echo "C:\Program Files\OpenCppCoverage" >> ${GITHUB_PATH}
|
||||
elif [ "$RUNNER_OS" == "Linux" ]; then
|
||||
sudo apt update
|
||||
sudo apt install -y gperf libxxf86vm-dev ninja-build postgresql-client lcov autoconf-archive
|
||||
else
|
||||
brew install automake ninja lcov autoconf-archive
|
||||
fi
|
||||
|
||||
- name: Enable Developer Command Prompt (Windows)
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
if: runner.os == 'Windows'
|
||||
|
||||
- name: Set CMAKE_BUILD_PARALLEL_LEVEL, CTEST_PARALLEL_LEVEL & PRESET
|
||||
shell: bash
|
||||
- name: checkout mapnik
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
- name: setup vcpkg
|
||||
uses: ./.github/actions/setup_vcpkg
|
||||
with:
|
||||
vcpkg-sha: 71d3fa60b67540e9bf5fde2bf2188f579ff09433
|
||||
nuget-source: https://nuget.pkg.github.com/mapnik/index.json
|
||||
nuget-username: ${{ github.actor }}
|
||||
nuget-pat: ${{ secrets.GITHUB_TOKEN }}
|
||||
mono: ${{ matrix.mono }}
|
||||
|
||||
- id: lc_platform
|
||||
uses: ASzc/change-string-case-action@v5
|
||||
with:
|
||||
string: ${{ runner.os }}
|
||||
|
||||
- name: set lower case runner os
|
||||
shell: "bash"
|
||||
run: |
|
||||
PRESET=$(echo "${RUNNER_OS}" | perl -ne "print lc")-ci
|
||||
if [ "${RUNNER_OS}" == "Linux" ]; then
|
||||
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
|
||||
echo "CTEST_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
|
||||
elif [ "${RUNNER_OS}" == "macOS" ]; then
|
||||
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(sysctl -n hw.logicalcpu)" >> ${GITHUB_ENV}
|
||||
echo "CTEST_PARALLEL_LEVEL=$(sysctl -n hw.logicalcpu)" >> ${GITHUB_ENV}
|
||||
PRESET=${PRESET}-${{ matrix.os == 'macos-14' && 'arm64' || 'x64' }}
|
||||
elif [ "${RUNNER_OS}" == "Windows" ]; then
|
||||
echo "CMAKE_BUILD_PARALLEL_LEVEL=$(pwsh -Command '(Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors')" >> ${GITHUB_ENV}
|
||||
echo "CTEST_PARALLEL_LEVEL=$(pwsh -Command '(Get-CimInstance -ClassName Win32_ComputerSystem).NumberOfLogicalProcessors')" >> ${GITHUB_ENV}
|
||||
fi
|
||||
echo "PRESET=${PRESET}" >> ${GITHUB_ENV}
|
||||
echo "PRESET=${{ steps.lc_platform.outputs.lowercase }}-ci" >>${GITHUB_ENV}
|
||||
|
||||
- name: Configure CMake
|
||||
shell: bash
|
||||
run: |
|
||||
cmake \
|
||||
-DBUILD_SHARED_LIBS:BOOL=ON \
|
||||
-DCMAKE_CXX_STANDARD:STRING=${{ matrix.cxx-standard }} \
|
||||
-DUSE_MEMORY_MAPPED_FILE:BOOL=ON \
|
||||
-LA \
|
||||
--preset ${PRESET}
|
||||
run: cmake -DUSE_MEMORY_MAPPED_FILE=${{ matrix.memory-mapped }} -DBUILD_SHARED_LIBS=${{ matrix.static-build }} --preset ${{ env.PRESET }}
|
||||
|
||||
- name: Build
|
||||
shell: bash
|
||||
run: |
|
||||
cmake \
|
||||
--build \
|
||||
--preset ${PRESET}
|
||||
run: cmake --build --preset ${{ env.PRESET }}
|
||||
|
||||
- name: Run Tests
|
||||
uses: ./.github/actions/run_tests
|
||||
|
|
8
.github/workflows/release_linux.yml
vendored
8
.github/workflows/release_linux.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
|||
steps:
|
||||
|
||||
- name: checkout mapnik
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: "recursive"
|
||||
|
||||
|
@ -40,7 +40,7 @@ jobs:
|
|||
libboost-regex-dev
|
||||
|
||||
- name: Configure CMake
|
||||
run: cmake -LA --preset ${{ env.PRESET }}
|
||||
run: cmake --preset ${{ env.PRESET }}
|
||||
|
||||
- name: Build
|
||||
run: cmake --build --preset ${{ env.PRESET }}
|
||||
|
@ -49,7 +49,7 @@ jobs:
|
|||
run: cmake --build --preset ${{ env.PRESET }} --target package
|
||||
|
||||
- name: Upload mapnik debian package
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.PRESET }}-deb
|
||||
path: build/mapnik-*.deb
|
||||
path: build/${{ env.PRESET }}/mapnik-*.deb
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.6.0
|
||||
rev: v4.3.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
files: ^.*\.cmake|CMakeLists\.txt$
|
||||
|
@ -10,7 +10,7 @@ repos:
|
|||
files: ^.*\.cmake|CMakeLists\.txt$
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||
rev: v18.1.3
|
||||
rev: v14.0.6
|
||||
hooks:
|
||||
- id: clang-format
|
||||
types_or: [c++, c]
|
||||
|
|
98
.travis.yml
Normal file
98
.travis.yml
Normal file
|
@ -0,0 +1,98 @@
|
|||
language: cpp
|
||||
|
||||
git:
|
||||
depth: 10
|
||||
submodules: false
|
||||
|
||||
env:
|
||||
global:
|
||||
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
||||
- CCACHE_COMPRESS=1
|
||||
- PREFIX=/tmp/mapnik
|
||||
- PYTHON=python3
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.ccache
|
||||
|
||||
dist: xenial
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
name: Linux clang
|
||||
env: >-
|
||||
CXX="ccache clang++ -Qunused-arguments"
|
||||
CC="clang"
|
||||
addons:
|
||||
postgresql: "9.5"
|
||||
apt:
|
||||
sources: [ 'ubuntu-toolchain-r-test' ]
|
||||
packages: [ 'xutils-dev', 'libstdc++-6-dev', 'postgresql-9.5-postgis-2.4' ]
|
||||
- os: linux
|
||||
name: Linux clang + coverage
|
||||
env: >-
|
||||
CXX="ccache clang++ -Qunused-arguments"
|
||||
CC="clang"
|
||||
COVERAGE=true
|
||||
QUIET=true
|
||||
before_install:
|
||||
- export LLVM_COV="llvm-cov"
|
||||
addons:
|
||||
postgresql: "9.5"
|
||||
apt:
|
||||
sources: [ 'ubuntu-toolchain-r-test' ]
|
||||
packages: [ 'xutils-dev', 'libstdc++-6-dev','postgresql-9.5-postgis-2.4' ]
|
||||
- os: osx
|
||||
name: OSX clang
|
||||
#https://docs.travis-ci.com/user/reference/osx#macos-version
|
||||
osx_image: xcode12.2
|
||||
env: >-
|
||||
CXX="ccache clang++ -Qunused-arguments"
|
||||
before_install:
|
||||
|
||||
install:
|
||||
- source scripts/travis-common.sh
|
||||
# workaround travis rvm bug
|
||||
# http://superuser.com/questions/1044130/why-am-i-having-how-can-i-fix-this-error-shell-session-update-command-not-f
|
||||
- on 'osx' rvm get head || true
|
||||
- export PATH=${PREFIX}/bin:$(pwd)/mason_packages/.link/bin:${PATH}
|
||||
- export COVERAGE=${COVERAGE:-false}
|
||||
- export BENCH=${BENCH:-false}
|
||||
- on 'osx' export DATA_PATH=$(brew --prefix)/var/postgres
|
||||
- on 'osx' rm -rf ${DATA_PATH}
|
||||
- on 'osx' initdb ${DATA_PATH} -E utf8
|
||||
- on 'osx' pg_ctl -w start -l postgres.log --pgdata ${DATA_PATH};
|
||||
- on 'osx' cat postgres.log;
|
||||
- on 'osx' createuser -s postgres
|
||||
- psql -c 'create database template_postgis;' -U postgres
|
||||
- psql -c 'create extension postgis;' -d template_postgis -U postgres
|
||||
- enabled ${COVERAGE} curl -S -f https://codecov.io/bash -o codecov
|
||||
- enabled ${COVERAGE} chmod +x codecov
|
||||
|
||||
before_script:
|
||||
- export JOBS=${JOBS:-4}
|
||||
- export HEAVY_JOBS=${HEAVY_JOBS:-2}
|
||||
- export SCONSFLAGS='--debug=time'
|
||||
- source bootstrap.sh
|
||||
- ccache --version
|
||||
- ccache -p || true
|
||||
- ccache --show-stats || true
|
||||
- commit_message_parse
|
||||
|
||||
script:
|
||||
- git_submodule_update --init deps/
|
||||
- on 'osx' brew unlink $(brew list --formula)
|
||||
- on 'osx' brew link git postgresql postgis
|
||||
- configure BENCHMARK=${BENCH} ENABLE_GLIBC_WORKAROUND=${ENABLE_GLIBC_WORKAROUND:-false} QUIET=${QUIET:-false}
|
||||
#- cat config.log => comment out to reduce log size limit on travis-ci
|
||||
# we limit the `make` to 40 min
|
||||
# to ensure that slow builds still upload their
|
||||
# ccache results and therefore should be faster
|
||||
# (and might work) for the next build
|
||||
- DEADLINE=$(( $(date +%s) + 40 * 60 ))
|
||||
- scripts/travis-command-wrapper.py -s "date" -i 120 --deadline="$DEADLINE" make
|
||||
- test_ok && git_submodule_update --init --depth=50 test/
|
||||
- test_ok && make test
|
||||
- test_ok && enabled ${COVERAGE} coverage
|
||||
- test_ok && enabled ${BENCH} make bench
|
||||
- ./scripts/check_glibcxx.sh
|
30
CHANGELOG.md
30
CHANGELOG.md
|
@ -6,38 +6,12 @@ Developers: Please commit along with changes.
|
|||
|
||||
For a complete change history, see the git log.
|
||||
|
||||
## Mapnik 4.0.3
|
||||
|
||||
Released October 30th, 2024
|
||||
|
||||
(Packaged from [05389e3c7](https://github.com/mapnik/mapnik/commit/05389e3c7))
|
||||
|
||||
- Remove 'final' specifier from invalid_featureset implementation
|
||||
(issues with dynamic_cast<> when building using Apple clang version 16.0.0 on darwin-arm64)
|
||||
- Rename invalid_featureset to empty_featureset
|
||||
- Upgrade to SCons v4.8.1
|
||||
- Fix unit tests e.g #endif statement (via @bgardner-noggin)
|
||||
|
||||
## Mapnik 4.0.2
|
||||
|
||||
Released August 21st, 2024
|
||||
|
||||
- CMake build - set `SOVERSION` to `${MAPNIK_MAJOR_VERSION}.${MAPNIK_MINOR_VERSION}`
|
||||
- Upgraded SCons build system to v4.8.0
|
||||
|
||||
## Mapnik 4.0.1
|
||||
|
||||
- Use CMAKE_INSTALL_LIBDIR for libdir in pkg-config files
|
||||
- Support gcc 14
|
||||
- Improved accuracy of bounding box re-projections. Automatic spliting at (0, 0) and merging results.
|
||||
- Fixes missing features when using WGS 84 / Arctic Polar Stereographic (`epsg:4326 <-> epsg:3995`)
|
||||
- Added `area_of_use` method to `mapnik::projection`
|
||||
|
||||
## Mapnik 4.0.0
|
||||
## UNRELEASED
|
||||
|
||||
#### Notice
|
||||
|
||||
- Mapnik now requires C++17 compliant compiler (`-std=c++17`)
|
||||
- Mapnik now requires C++14 compliant compiler (`-std=c++14`)
|
||||
- Mapnik now supports CMake as a build system. See [#4191](https://github.com/mapnik/mapnik/pull/4191) and the [docs](https://github.com/mapnik/mapnik/blob/master/docs/cmake-usage.md) for more info.
|
||||
|
||||
#### Breaking Changes
|
||||
|
|
|
@ -49,7 +49,6 @@ mapnik_option(USE_PROJ "adds proj support" ON)
|
|||
mapnik_option(USE_GRID_RENDERER "adds grid renderer" ON)
|
||||
mapnik_option(USE_SVG_RENDERER "adds svg renderer" ON)
|
||||
mapnik_option(USE_BIGINT "uses 64 bit instead of 32" ON)
|
||||
mapnik_option(USE_BOOST_FILESYSTEM "use boost::filesytem even if `std::filesystem` is available (since c++17)" OFF)
|
||||
mapnik_option(USE_MEMORY_MAPPED_FILE "uses file cache" ON)
|
||||
mapnik_option(USE_MULTITHREADED "enables the multithreaded features (threadsafe)" ON)
|
||||
mapnik_option(USE_NO_ATEXIT "disable atexit" OFF)
|
||||
|
@ -126,7 +125,7 @@ set(MAPNIK_OPTIONAL_LIBS_INCLUDE "")
|
|||
#############################
|
||||
#############################
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "Sets the c++ standard. c++17 is minimum.")
|
||||
set(CMAKE_CXX_STANDARD 14 CACHE STRING "Sets the c++ standard. c++14 is minimum.")
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) # require the specified CMAKE_CXX_STANDARD
|
||||
set(CMAKE_CXX_EXTENSIONS OFF CACHE STRING "Enables the compiler specific extensions.") # Fallsback to -std=c++<ver> if off
|
||||
message(STATUS "Using c++${CMAKE_CXX_STANDARD}")
|
||||
|
@ -142,10 +141,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${MAPNIK_OUTPUT_DIR}")
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${MAPNIK_OUTPUT_DIR}/lib")
|
||||
|
||||
# needs to be before the first call of find_boost.
|
||||
if(CMAKE_CXX_STANDARD VERSION_LESS 17)
|
||||
list(APPEND MAPNIK_COMPILE_DEFS BOOST_SPIRIT_X3_HIDE_CXX17_WARNING)
|
||||
endif()
|
||||
|
||||
if(USE_MULTITHREADED)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_THREADSAFE)
|
||||
|
@ -158,14 +154,7 @@ mapnik_find_package(PkgConfig REQUIRED)
|
|||
mapnik_find_threads()
|
||||
mapnik_find_package(ICU REQUIRED COMPONENTS uc i18n data)
|
||||
|
||||
mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS regex)
|
||||
if(CMAKE_CXX_STANDARD VERSION_LESS 17)
|
||||
set(USE_BOOST_FILESYSTEM ON CACHE BOOL "Use boost::filesystem" FORCE)
|
||||
endif()
|
||||
if(USE_BOOST_FILESYSTEM)
|
||||
mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS filesystem system)
|
||||
endif()
|
||||
|
||||
mapnik_find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS filesystem system regex)
|
||||
list(APPEND MAPNIK_COMPILE_DEFS BOOST_REGEX_HAS_ICU)
|
||||
if(USE_BOOST_REGEX_ICU_WORKAROUND)
|
||||
message(STATUS "using boost regex workaround")
|
||||
|
@ -268,11 +257,6 @@ if(USE_BIGINT)
|
|||
list(APPEND MAPNIK_COMPILE_DEFS BIGINT)
|
||||
endif()
|
||||
|
||||
if(USE_BOOST_FILESYSTEM)
|
||||
list(APPEND MAPNIK_COMPILE_DEFS USE_BOOST_FILESYSTEM)
|
||||
list(APPEND MAPNIK_OPTIONAL_LIBS Boost::filesystem)
|
||||
endif()
|
||||
|
||||
if(USE_MEMORY_MAPPED_FILE)
|
||||
list(APPEND MAPNIK_COMPILE_DEFS MAPNIK_MEMORY_MAPPED_FILE)
|
||||
endif()
|
||||
|
@ -410,10 +394,10 @@ target_link_libraries(core INTERFACE
|
|||
ICU::i18n
|
||||
Boost::headers
|
||||
Boost::regex
|
||||
Boost::filesystem
|
||||
Freetype::Freetype
|
||||
${MAPNIK_OPTIONAL_LIBS}
|
||||
)
|
||||
|
||||
target_compile_definitions(core INTERFACE ${MAPNIK_COMPILE_DEFS})
|
||||
|
||||
mapnik_install(core)
|
||||
|
@ -448,8 +432,8 @@ feature_summary(FILENAME "${CMAKE_CURRENT_BINARY_DIR}/packages.log" WHAT PACKAGE
|
|||
include(MapnikExport)
|
||||
include(MapnikExportPkgConfig)
|
||||
|
||||
install(DIRECTORY include/mapnik/ DESTINATION "${MAPNIK_INCLUDE_DIR}/mapnik")
|
||||
install(DIRECTORY deps/agg/include/ DESTINATION "${MAPNIK_INCLUDE_DIR}/mapnik/agg")
|
||||
install(DIRECTORY include/ DESTINATION "${MAPNIK_INCLUDE_DIR}")
|
||||
install(DIRECTORY deps/agg/include/ DESTINATION "${MAPNIK_INCLUDE_DIR}")
|
||||
install(DIRECTORY deps/mapnik DESTINATION "${MAPNIK_INCLUDE_DIR}")
|
||||
file(GLOB TTF_FONT_FILES "fonts/*/*/*.ttf")
|
||||
install(FILES ${TTF_FONT_FILES} DESTINATION "${FONTS_INSTALL_DIR}")
|
||||
|
|
|
@ -228,23 +228,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-arm64",
|
||||
"description": "used by the ci pipeline",
|
||||
"inherits": [
|
||||
"use-ninja",
|
||||
"release-with-debug-build",
|
||||
"default-build-dir",
|
||||
"ci-options"
|
||||
],
|
||||
"cacheVariables": {
|
||||
"CMAKE_CXX_FLAGS": "-fprofile-arcs -ftest-coverage"
|
||||
},
|
||||
"environment": {
|
||||
"PROJ_LIB": "${sourceDir}/build/vcpkg_installed/arm64-osx/share/proj"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-x64",
|
||||
"name": "macos-ci",
|
||||
"description": "used by the ci pipeline",
|
||||
"inherits": [
|
||||
"use-ninja",
|
||||
|
@ -298,12 +282,8 @@
|
|||
"configurePreset": "linux-ci-release"
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-arm64",
|
||||
"configurePreset": "macos-ci-arm64"
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-x64",
|
||||
"configurePreset": "macos-ci-x64"
|
||||
"name": "macos-ci",
|
||||
"configurePreset": "macos-ci"
|
||||
}
|
||||
],
|
||||
"testPresets": [
|
||||
|
@ -333,15 +313,8 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-arm64",
|
||||
"configurePreset": "macos-ci-arm64",
|
||||
"inherits": [
|
||||
"test-default"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "macos-ci-x64",
|
||||
"configurePreset": "macos-ci-x64",
|
||||
"name": "macos-ci",
|
||||
"configurePreset": "macos-ci",
|
||||
"inherits": [
|
||||
"test-default"
|
||||
]
|
||||
|
|
12
INSTALL.md
12
INSTALL.md
|
@ -42,8 +42,8 @@ To use a Python interpreter that is not named `python` for your build, do
|
|||
something like the following instead:
|
||||
|
||||
```bash
|
||||
$ PYTHON=python3 ./configure
|
||||
$ make PYTHON=python3
|
||||
$ PYTHON=python2 ./configure
|
||||
$ make PYTHON=python2
|
||||
```
|
||||
|
||||
NOTE: the above will not work on windows, rather see https://github.com/mapnik/mapnik/wiki/WindowsInstallation
|
||||
|
@ -71,15 +71,15 @@ For troubleshooting help see https://github.com/mapnik/mapnik/wiki/InstallationT
|
|||
|
||||
Build system dependencies are:
|
||||
|
||||
* C++ compiler supporting `-std=c++17` (like >= g++ 9 or >= clang++ 5)
|
||||
* \>= 2 GB RAM (> 5 GB for g++)
|
||||
* Python 3
|
||||
* C++ compiler supporting `-std=c++14` (like >= g++ 4.8 or >= clang++ 3.4)
|
||||
* >= 2 GB RAM (> 5 GB for g++)
|
||||
* Python 2.4-2.7
|
||||
* Scons (a copy is bundled) or CMake >= 3.15 see [docs/cmake-usage.md](./docs/cmake-usage.md)
|
||||
|
||||
Mapnik Core depends on:
|
||||
|
||||
* Boost
|
||||
- \>= 1.73 is required
|
||||
- >= 1.73 is required
|
||||
- These libraries are used:
|
||||
- filesystem
|
||||
- system
|
||||
|
|
88
SConstruct
88
SConstruct
|
@ -1,6 +1,6 @@
|
|||
# This file is part of Mapnik (c++ mapping toolkit)
|
||||
#
|
||||
# Copyright (C) 2024 Artem Pavlenko
|
||||
# Copyright (C) 2021 Artem Pavlenko
|
||||
#
|
||||
# Mapnik is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -22,7 +22,7 @@ import re
|
|||
import platform
|
||||
from glob import glob
|
||||
from copy import copy
|
||||
from subprocess import run, Popen, PIPE
|
||||
from subprocess import Popen, PIPE
|
||||
from SCons.SConf import SetCacheMode
|
||||
import pickle
|
||||
|
||||
|
@ -43,7 +43,7 @@ ICU_LIBS_DEFAULT='/usr/'
|
|||
|
||||
DEFAULT_CC = "cc"
|
||||
DEFAULT_CXX = "c++"
|
||||
DEFAULT_CXX_STD = "17"
|
||||
DEFAULT_CXX_STD = "14"
|
||||
DEFAULT_CXX_CXXFLAGS = " -DU_USING_ICU_NAMESPACE=0"
|
||||
DEFAULT_CXX_LINKFLAGS = ""
|
||||
if sys.platform == 'darwin':
|
||||
|
@ -410,8 +410,8 @@ opts.AddVariables(
|
|||
PathVariable('WEBP_INCLUDES', 'Search path for libwebp include files', '/usr/include', PathVariable.PathAccept),
|
||||
PathVariable('WEBP_LIBS','Search path for libwebp library files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||
BoolVariable('PROJ', 'Build Mapnik with proj support to enable transformations between many different projections', 'True'),
|
||||
PathVariable('PROJ_INCLUDES', 'Search path for libproj include files', '/usr/include', PathVariable.PathAccept),
|
||||
PathVariable('PROJ_LIBS', 'Search path for libproj library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||
PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept),
|
||||
PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||
('PG_INCLUDES', 'Search path for libpq (postgres client) include files', ''),
|
||||
('PG_LIBS', 'Search path for libpq (postgres client) library files', ''),
|
||||
('FREETYPE_INCLUDES', 'Search path for Freetype include files', ''),
|
||||
|
@ -467,7 +467,6 @@ opts.AddVariables(
|
|||
BoolVariable('MAPNIK_RENDER', 'Compile and install a utility to render a map to an image', 'True'),
|
||||
BoolVariable('COLOR_PRINT', 'Print build status information in color', 'True'),
|
||||
BoolVariable('BIGINT', 'Compile support for 64-bit integers in mapnik::value', 'True'),
|
||||
BoolVariable('USE_BOOST_FILESYSTEM','Use boost::filesytem even if `std::filesystem` is available (since c++17)', 'False'),
|
||||
BoolVariable('QUIET', 'Reduce build verbosity', 'False'),
|
||||
)
|
||||
|
||||
|
@ -536,7 +535,6 @@ pickle_store = [# Scons internal variables
|
|||
'SQLITE_LINKFLAGS',
|
||||
'BOOST_LIB_VERSION_FROM_HEADER',
|
||||
'BIGINT',
|
||||
'USE_BOOST_FILESYSTEM',
|
||||
'HOST',
|
||||
'QUERIED_GDAL_DATA',
|
||||
'QUERIED_ICU_DATA',
|
||||
|
@ -949,17 +947,54 @@ int main()
|
|||
return ret
|
||||
|
||||
def CheckProjData(context, silent=False):
|
||||
|
||||
if not silent:
|
||||
context.Message('Checking for PROJ_LIB directory...')
|
||||
result = run(['pkg-config', 'proj', '--variable=datadir'], stdout=PIPE)
|
||||
value = result.stdout.decode('utf-8').strip()
|
||||
ret, out = context.TryRun("""
|
||||
|
||||
#include <proj.h>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
||||
std::vector<std::string> split_searchpath(std::string const& paths)
|
||||
{
|
||||
std::vector<std::string> output;
|
||||
std::stringstream ss(paths);
|
||||
std::string path;
|
||||
|
||||
for( std::string path;std::getline(ss, path, ':');)
|
||||
{
|
||||
output.push_back(path);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
PJ_INFO info = proj_info();
|
||||
std::string result = info.searchpath;
|
||||
for (auto path : split_searchpath(result))
|
||||
{
|
||||
std::ifstream file(path + "/proj.db");
|
||||
if (file)
|
||||
{
|
||||
std::cout << path;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
""", '.cpp')
|
||||
value = out.strip()
|
||||
if silent:
|
||||
context.did_show_result=1
|
||||
if os.path.exists(value):
|
||||
context.Result('`pkg-config proj --variable=datadir` returned:\n%s ' % value)
|
||||
if ret:
|
||||
context.Result('proj_info.searchpath returned %s' % value)
|
||||
else:
|
||||
value = None
|
||||
context.Result('Failed to detect (mapnik-config will have null value)')
|
||||
return value
|
||||
|
||||
|
@ -1545,25 +1580,11 @@ if not preconfigured:
|
|||
env['SKIPPED_DEPS'].append('png')
|
||||
|
||||
if env['WEBP']:
|
||||
if env.get('WEBP_LIBS') or env.get('WEBP_INCLUDES'):
|
||||
OPTIONAL_LIBSHEADERS.append(['webp', 'webp/decode.h', False,'C','-DHAVE_WEBP'])
|
||||
inc_path = env['WEBP_INCLUDES']
|
||||
lib_path = env['WEBP_LIBS']
|
||||
inc_path = env['%s_INCLUDES' % 'WEBP']
|
||||
lib_path = env['%s_LIBS' % 'WEBP']
|
||||
env.AppendUnique(CPPPATH = fix_path(inc_path))
|
||||
env.AppendUnique(LIBPATH = fix_path(lib_path))
|
||||
else:
|
||||
cmd = 'pkg-config libwebp --libs --cflags'
|
||||
if env['RUNTIME_LINK'] == 'static':
|
||||
cmd += ' --static'
|
||||
temp_env = Environment(ENV=os.environ)
|
||||
try:
|
||||
temp_env.ParseConfig(cmd)
|
||||
for lib in temp_env['LIBS']:
|
||||
env.AppendUnique(LIBPATH = fix_path(lib))
|
||||
for inc in temp_env['CPPPATH']:
|
||||
env.AppendUnique(CPPPATH = fix_path(inc))
|
||||
except OSError as e:
|
||||
pass
|
||||
else:
|
||||
env['SKIPPED_DEPS'].append('webp')
|
||||
|
||||
|
@ -1610,12 +1631,6 @@ if not preconfigured:
|
|||
if env['BIGINT']:
|
||||
env.Append(CPPDEFINES = '-DBIGINT')
|
||||
|
||||
if int(env['CXX_STD']) < 17:
|
||||
env['USE_BOOST_FILESYSTEM'] = True
|
||||
|
||||
if env['USE_BOOST_FILESYSTEM']:
|
||||
env.Append(CPPDEFINES = '-DUSE_BOOST_FILESYSTEM')
|
||||
|
||||
if env['THREADING'] == 'multi':
|
||||
thread_flag = thread_suffix
|
||||
else:
|
||||
|
@ -1635,13 +1650,12 @@ if not preconfigured:
|
|||
|
||||
# The other required boost headers.
|
||||
BOOST_LIBSHEADERS = [
|
||||
['system', 'boost/system/system_error.hpp', True],
|
||||
['filesystem', 'boost/filesystem/operations.hpp', True],
|
||||
['regex', 'boost/regex.hpp', True],
|
||||
['program_options', 'boost/program_options.hpp', False]
|
||||
]
|
||||
|
||||
if env['USE_BOOST_FILESYSTEM']:
|
||||
BOOST_LIBSHEADERS.append(['system', 'boost/system/system_error.hpp', True])
|
||||
BOOST_LIBSHEADERS.append(['filesystem', 'boost/filesystem/operations.hpp', True])
|
||||
# if requested, sort LIBPATH and CPPPATH before running CheckLibWithHeader tests
|
||||
if env['PRIORITIZE_LINKING']:
|
||||
conf.prioritize_paths(silent=True)
|
||||
|
|
39
appveyor.yml
Normal file
39
appveyor.yml
Normal file
|
@ -0,0 +1,39 @@
|
|||
environment:
|
||||
msvs_toolset: 14
|
||||
FASTBUILD: 1
|
||||
matrix:
|
||||
- platform: x64
|
||||
configuration: Release
|
||||
|
||||
os: Visual Studio 2015
|
||||
|
||||
#shallow_clone: true
|
||||
# limit clone to latest 5 commits
|
||||
clone_depth: 5
|
||||
|
||||
services:
|
||||
- postgresql94 #if changing this, also change PATH below
|
||||
|
||||
install:
|
||||
- SET PGUSER=postgres
|
||||
- SET PGPASSWORD=Password12!
|
||||
- SET PATH=C:\Program Files\PostgreSQL\9.4\bin\;%PATH%
|
||||
|
||||
build_script:
|
||||
- scripts\build-appveyor.bat
|
||||
|
||||
after_build:
|
||||
- 7z a visual-test-results.zip C:\tmp\mapnik-visual-images\visual-test-results
|
||||
|
||||
artifacts:
|
||||
- path: mapnik-gyp\msbuild-summary.txt
|
||||
name: msbuild-summary.txt
|
||||
- path: mapnik-gyp\msbuild-errors.txt
|
||||
name: msbuild-errors.txt
|
||||
- path: mapnik-gyp\msbuild-warnings.txt
|
||||
name: msbuild-warnings.txt
|
||||
- path: visual-test-results.zip
|
||||
name: visual-test-results.zip
|
||||
|
||||
test: off
|
||||
deploy: off
|
|
@ -15,6 +15,8 @@
|
|||
#include <cstdio> // snprintf
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <vector>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "bench_framework.hpp"
|
||||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
class test : public benchmark::test_case
|
||||
{
|
||||
|
|
|
@ -9,7 +9,7 @@ class test : public benchmark::test_case
|
|||
: test_case(params)
|
||||
, line_data_("this is one line\nand this is a second line\nand a third line")
|
||||
{
|
||||
auto line_data = params.get<std::string>("line");
|
||||
boost::optional<std::string> line_data = params.get<std::string>("line");
|
||||
if (line_data)
|
||||
{
|
||||
line_data_ = *line_data;
|
||||
|
@ -57,7 +57,7 @@ class test2 : public benchmark::test_case
|
|||
: test_case(params)
|
||||
, line_data_("this is one line\nand this is a second line\nand a third line")
|
||||
{
|
||||
auto line_data = params.get<std::string>("line");
|
||||
boost::optional<std::string> line_data = params.get<std::string>("line");
|
||||
if (line_data)
|
||||
{
|
||||
line_data_ = *line_data;
|
||||
|
|
|
@ -26,14 +26,14 @@ class test : public benchmark::test_case
|
|||
, scale_factor_(*params.get<mapnik::value_double>("scale_factor", 1.0))
|
||||
, preview_(*params.get<std::string>("preview", ""))
|
||||
{
|
||||
const auto map = params.get<std::string>("map");
|
||||
boost::optional<std::string> map = params.get<std::string>("map");
|
||||
if (!map)
|
||||
{
|
||||
throw std::runtime_error("please provide a --map <path to xml> arg");
|
||||
}
|
||||
xml_ = *map;
|
||||
|
||||
const auto ext = params.get<std::string>("extent");
|
||||
boost::optional<std::string> ext = params.get<std::string>("extent");
|
||||
if (ext && !ext->empty())
|
||||
{
|
||||
if (!extent_.from_string(*ext))
|
||||
|
@ -101,7 +101,7 @@ int main(int argc, char** argv)
|
|||
{
|
||||
mapnik::parameters params;
|
||||
benchmark::handle_args(argc, argv, params);
|
||||
const auto name = params.get<std::string>("name");
|
||||
boost::optional<std::string> name = params.get<std::string>("name");
|
||||
if (!name)
|
||||
{
|
||||
std::clog << "please provide a name for this test\n";
|
||||
|
|
|
@ -64,14 +64,14 @@ class test : public benchmark::test_case
|
|||
, preview_(*params.get<std::string>("preview", ""))
|
||||
, im_(m_->width(), m_->height())
|
||||
{
|
||||
const auto map = params.get<std::string>("map");
|
||||
boost::optional<std::string> map = params.get<std::string>("map");
|
||||
if (!map)
|
||||
{
|
||||
throw std::runtime_error("please provide a --map=<path to xml> arg");
|
||||
}
|
||||
xml_ = *map;
|
||||
|
||||
auto ext = params.get<std::string>("extent");
|
||||
boost::optional<std::string> ext = params.get<std::string>("extent");
|
||||
mapnik::load_map(*m_, xml_, true);
|
||||
if (ext && !ext->empty())
|
||||
{
|
||||
|
@ -156,7 +156,7 @@ int main(int argc, char** argv)
|
|||
{
|
||||
mapnik::parameters params;
|
||||
benchmark::handle_args(argc, argv, params);
|
||||
const auto name = params.get<std::string>("name");
|
||||
boost::optional<std::string> name = params.get<std::string>("name");
|
||||
if (!name)
|
||||
{
|
||||
std::clog << "please provide a name for this test\n";
|
||||
|
|
173
bootstrap.sh
Executable file
173
bootstrap.sh
Executable file
|
@ -0,0 +1,173 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
: '
|
||||
|
||||
todo
|
||||
|
||||
- docs for base setup: sudo apt-get -y install zlib1g-dev make git
|
||||
- shrink icu data
|
||||
'
|
||||
|
||||
MASON_VERSION="485514d8"
|
||||
|
||||
function setup_mason() {
|
||||
if [[ ! -d ./.mason ]]; then
|
||||
git clone https://github.com/mapbox/mason.git .mason || return
|
||||
elif ! git -C .mason rev-parse -q --verify "$MASON_VERSION" >/dev/null; then
|
||||
git -C .mason fetch --all || true # non-fatal
|
||||
fi
|
||||
git -C .mason checkout --detach "$MASON_VERSION" -- || return
|
||||
case ":$PATH:" in
|
||||
*":$PWD/.mason:"*) : already there ;;
|
||||
*) export PATH="$PWD/.mason:$PATH" ;;
|
||||
esac
|
||||
export CXX=${CXX:-clang++}
|
||||
export CC=${CC:-clang}
|
||||
}
|
||||
|
||||
function install() {
|
||||
MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID)
|
||||
if [[ ! -d ./mason_packages/${MASON_PLATFORM_ID}/${1}/${2} ]]; then
|
||||
mason install $1 $2
|
||||
if [[ ${3:-false} != false ]]; then
|
||||
LA_FILE=$(mason prefix $1 $2)/lib/$3.la
|
||||
if [[ -f ${LA_FILE} ]]; then
|
||||
perl -i -p -e 's:\Q$ENV{HOME}/build/mapbox/mason\E:$ENV{PWD}:g' ${LA_FILE}
|
||||
else
|
||||
echo "$LA_FILE not found"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# the rm here is to workaround https://github.com/mapbox/mason/issues/230
|
||||
rm -f ./mason_packages/.link/mason.ini
|
||||
mason link $1 $2
|
||||
}
|
||||
|
||||
ICU_VERSION="58.1"
|
||||
BOOST_VERSION="1.75.0"
|
||||
|
||||
function install_mason_deps() {
|
||||
install ccache 3.3.1
|
||||
install zlib 1.2.8
|
||||
install jpeg_turbo 1.5.2 libjpeg
|
||||
install libpng 1.6.32 libpng
|
||||
install libtiff 4.0.8 libtiff
|
||||
install libpq 9.6.5
|
||||
install sqlite 3.34.0 libsqlite3
|
||||
install icu ${ICU_VERSION}
|
||||
install proj 7.2.1 libproj
|
||||
install pixman 0.34.0 libpixman-1
|
||||
install cairo 1.14.8 libcairo
|
||||
install webp 0.6.0 libwebp
|
||||
install libgdal 2.2.3 libgdal
|
||||
install boost ${BOOST_VERSION}
|
||||
install boost_libsystem ${BOOST_VERSION}
|
||||
install boost_libfilesystem ${BOOST_VERSION}
|
||||
install boost_libprogram_options ${BOOST_VERSION}
|
||||
install boost_libregex_icu58 ${BOOST_VERSION}
|
||||
# technically boost thread and python are not a core dep, but installing
|
||||
# here by default helps make python-mapnik builds easier
|
||||
install boost_libthread ${BOOST_VERSION}
|
||||
install boost_libpython ${BOOST_VERSION}
|
||||
install freetype 2.7.1 libfreetype
|
||||
install harfbuzz 1.4.4-ft libharfbuzz
|
||||
}
|
||||
|
||||
MASON_LINKED_ABS=$(pwd)/mason_packages/.link
|
||||
MASON_LINKED_REL=./mason_packages/.link
|
||||
export C_INCLUDE_PATH="${MASON_LINKED_ABS}/include"
|
||||
export CPLUS_INCLUDE_PATH="${MASON_LINKED_ABS}/include"
|
||||
export LIBRARY_PATH="${MASON_LINKED_ABS}/lib"
|
||||
|
||||
function make_config() {
|
||||
echo "
|
||||
CXX = '$CXX'
|
||||
CC = '$CC'
|
||||
CUSTOM_CXXFLAGS = '-D_GLIBCXX_USE_CXX11_ABI=0'
|
||||
RUNTIME_LINK = 'static'
|
||||
INPUT_PLUGINS = 'all'
|
||||
PATH = '${MASON_LINKED_REL}/bin'
|
||||
PKG_CONFIG_PATH = '${MASON_LINKED_REL}/lib/pkgconfig'
|
||||
PATH_REMOVE = '/usr:/usr/local'
|
||||
PATH_REPLACE = '$HOME/build/mapbox/mason/mason_packages:./mason_packages'
|
||||
BOOST_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
BOOST_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
ICU_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
ICU_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
HB_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
HB_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
PNG_INCLUDES = '${MASON_LINKED_REL}/include/libpng16'
|
||||
PNG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
JPEG_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
JPEG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
TIFF_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
TIFF_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
WEBP_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
WEBP_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
PROJ_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
PROJ_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
PG_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
PG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
FREETYPE_INCLUDES = '${MASON_LINKED_REL}/include/freetype2'
|
||||
FREETYPE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
SVG_RENDERER = True
|
||||
CAIRO_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
CAIRO_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
SQLITE_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
SQLITE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
BENCHMARK = True
|
||||
CPP_TESTS = True
|
||||
PGSQL2SQLITE = True
|
||||
XMLPARSER = 'ptree'
|
||||
SVG2PNG = True
|
||||
"
|
||||
}
|
||||
|
||||
# NOTE: the `mapnik-settings.env` is used by test/run (which is run by `make test`)
|
||||
function setup_runtime_settings() {
|
||||
echo "export PROJ_LIB=${MASON_LINKED_ABS}/share/proj" > mapnik-settings.env
|
||||
echo "export ICU_DATA=${MASON_LINKED_ABS}/share/icu/${ICU_VERSION}" >> mapnik-settings.env
|
||||
echo "export GDAL_DATA=${MASON_LINKED_ABS}/share/gdal" >> mapnik-settings.env
|
||||
}
|
||||
|
||||
# turn arguments of the form NAME=VALUE into exported variables;
|
||||
# any other arguments are reported and cause error return status
|
||||
function export_variables() {
|
||||
local arg= ret=0
|
||||
for arg
|
||||
do
|
||||
if [[ "$arg" =~ ^[[:alpha:]][_[:alnum:]]*= ]]
|
||||
then
|
||||
export "$arg"
|
||||
else
|
||||
printf >&2 "bootstrap.sh: invalid argument: %s\n" "$arg"
|
||||
ret=1
|
||||
fi
|
||||
done
|
||||
return $ret
|
||||
}
|
||||
|
||||
function main() {
|
||||
export_variables "$@" || return
|
||||
# setup_mason must not run in subshell, because it sets default
|
||||
# values of CC, CXX and adds mason to PATH, which we want to keep
|
||||
# when sourced
|
||||
setup_mason || return
|
||||
(
|
||||
# this is wrapped in subshell to allow sourcing this script
|
||||
# without having the terminal closed on error
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
install_mason_deps
|
||||
make_config > ./config.py
|
||||
setup_runtime_settings
|
||||
|
||||
printf "\n\e[1;32m%s\e[m\n" "bootstrap successful, now run:"
|
||||
echo ""
|
||||
echo " ./configure && make"
|
||||
echo ""
|
||||
)
|
||||
}
|
||||
|
||||
main "$@"
|
|
@ -3,13 +3,13 @@ function(create_pkg_config_file _target _lib_name _description)
|
|||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
includedir=${prefix}/include
|
||||
libdir=${exec_prefix}/@MAPNIK_LIB_DIR@
|
||||
libdir=${exec_prefix}/lib
|
||||
|
||||
Name: @_lib_name@
|
||||
Description: @_description@
|
||||
Version: @MAPNIK_VERSION@
|
||||
Libs: -L"${libdir}" -l$<TARGET_FILE_BASE_NAME:@_target@>$<TARGET_PROPERTY:@_target@,$<CONFIG>_POSTFIX>
|
||||
Cflags: -I"${includedir}" -I"${includedir}/mapnik" ]]
|
||||
Cflags: -I"${includedir}" ]]
|
||||
_contents @ONLY)
|
||||
|
||||
file(GENERATE
|
||||
|
@ -64,7 +64,7 @@ function(create_pkg_config_file_mapnik _lib_name _description)
|
|||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
includedir=${prefix}/include
|
||||
libdir=${exec_prefix}/@MAPNIK_LIB_DIR@
|
||||
libdir=${exec_prefix}/lib
|
||||
fonts_dir=${prefix}/@FONTS_INSTALL_DIR@
|
||||
plugins_dir=${prefix}/@PLUGINS_INSTALL_DIR@
|
||||
|
||||
|
@ -73,7 +73,7 @@ Description: @_description@
|
|||
Version: @MAPNIK_VERSION@
|
||||
Requires: @m_requires@
|
||||
Libs: -L"${libdir}" -l$<TARGET_FILE_BASE_NAME:mapnik>$<TARGET_PROPERTY:mapnik,$<CONFIG>_POSTFIX>
|
||||
Cflags: -I"${includedir}" -I"${includedir}/mapnik" -I"${includedir}/mapnik/agg" @m_str_compile_defs@]]
|
||||
Cflags: -I"${includedir}" @m_str_compile_defs@]]
|
||||
_contents @ONLY)
|
||||
file(GENERATE
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_lib_name}-$<CONFIG>.pc
|
||||
|
|
18
configure
vendored
18
configure
vendored
|
@ -1,32 +1,18 @@
|
|||
#! /usr/bin/env bash
|
||||
#! /bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
: ${PYTHON:=python}
|
||||
|
||||
# Only some shells (Bash and Z shell) support arrays. Therefore,
|
||||
# the following code provides an alternative for users calling the script
|
||||
# with shells other than Bash or Z shell (e.g. Debian users using Dash).
|
||||
THE_SHELL=$(basename $SHELL)
|
||||
if [ "$THE_SHELL" != "bash" ] && [ "$THE_SHELL" != "zsh" ]; then
|
||||
if [ -f mapnik-settings.env ]; then
|
||||
echo "WARNING: Reading from mapnik-settings.env is supported with Bash or Z shell only."
|
||||
fi
|
||||
$PYTHON scons/scons.py --implicit-deps-changed configure "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# mapnik-settings.env is an optional file to store
|
||||
# environment variables that should be used before
|
||||
# running tests like PROJ_LIB, GDAL_DATA, and ICU_DATA
|
||||
# These do not normally need to be set except when
|
||||
# building against binary versions of dependencies like
|
||||
# done via bootstrap.sh
|
||||
|
||||
if [ -f mapnik-settings.env ]; then
|
||||
echo "Inheriting from mapnik-settings.env"
|
||||
. ./mapnik-settings.env
|
||||
VARS=( $(cat mapnik-settings.env) )
|
||||
fi
|
||||
|
||||
$PYTHON scons/scons.py --implicit-deps-changed configure ${VARS[*]:-} "$@"
|
||||
$PYTHON scons/scons.py --implicit-deps-changed configure "$@"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -51,7 +51,7 @@ layer_info_dialog::layer_info_dialog(mapnik::layer& lay, QWidget* parent)
|
|||
int index = 0;
|
||||
for (pos = ps.begin(); pos != ps.end(); ++pos)
|
||||
{
|
||||
std::optional<std::string> result;
|
||||
boost::optional<std::string> result;
|
||||
mapnik::util::apply_visitor(mapnik::value_extractor_visitor<std::string>(result), pos->second);
|
||||
if (result)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -106,7 +106,10 @@ MainWindow::MainWindow()
|
|||
// slider
|
||||
connect(slider_, SIGNAL(valueChanged(int)), mapWidget_, SLOT(zoomToLevel(int)));
|
||||
// renderer selector
|
||||
connect(renderer_selector_, SIGNAL(currentIndexChanged(int)), mapWidget_, SLOT(updateRenderer(int)));
|
||||
connect(renderer_selector_,
|
||||
SIGNAL(currentIndexChanged(QString const&)),
|
||||
mapWidget_,
|
||||
SLOT(updateRenderer(QString const&)));
|
||||
|
||||
// scale factor
|
||||
connect(scale_factor_, SIGNAL(valueChanged(double)), mapWidget_, SLOT(updateScaleFactor(double)));
|
||||
|
@ -387,7 +390,7 @@ void MainWindow::createToolBars()
|
|||
|
||||
scale_factor_ = new QDoubleSpinBox(fileToolBar);
|
||||
scale_factor_->setMinimum(0.1);
|
||||
scale_factor_->setMaximum(10.0);
|
||||
scale_factor_->setMaximum(5.0);
|
||||
scale_factor_->setSingleStep(0.1);
|
||||
scale_factor_->setValue(1.0);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -545,15 +545,15 @@ void render_cairo(mapnik::Map const& map, double scaling_factor, QPixmap& pix)
|
|||
#endif
|
||||
}
|
||||
|
||||
void MapWidget::updateRenderer(int index)
|
||||
void MapWidget::updateRenderer(QString const& txt)
|
||||
{
|
||||
std::cerr << "updateRenderer:" << index << std::endl;
|
||||
if (index == 0)
|
||||
if (txt == "AGG")
|
||||
cur_renderer_ = AGG;
|
||||
else if (index == 1)
|
||||
else if (txt == "Cairo")
|
||||
cur_renderer_ = Cairo;
|
||||
else if (index == 2)
|
||||
else if (txt == "Grid")
|
||||
cur_renderer_ = Grid;
|
||||
std::cerr << "Update renderer called" << std::endl;
|
||||
updateMap();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -82,7 +82,7 @@ class MapWidget : public QWidget
|
|||
void zoomToLevel(int level);
|
||||
void updateMap();
|
||||
void layerSelected(int);
|
||||
void updateRenderer(int);
|
||||
void updateRenderer(QString const& txt);
|
||||
void updateScaleFactor(double scale_factor);
|
||||
signals:
|
||||
void mapViewChanged();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* Mapnik is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
|
5
deps/agg/include/agg_pixfmt_rgba.h
vendored
5
deps/agg/include/agg_pixfmt_rgba.h
vendored
|
@ -24,7 +24,6 @@
|
|||
#ifndef AGG_PIXFMT_RGBA_INCLUDED
|
||||
#define AGG_PIXFMT_RGBA_INCLUDED
|
||||
|
||||
#include <mapnik/config.hpp>
|
||||
#include <cstring>
|
||||
#include <cmath>
|
||||
#include "agg_basics.h"
|
||||
|
@ -3167,10 +3166,6 @@ private:
|
|||
|
||||
|
||||
|
||||
extern template struct MAPNIK_DECL comp_op_rgba_hue<agg::rgba8, agg::order_rgba>;
|
||||
extern template struct MAPNIK_DECL comp_op_rgba_saturation<agg::rgba8, agg::order_rgba>;
|
||||
extern template struct MAPNIK_DECL comp_op_rgba_color<agg::rgba8, agg::order_rgba>;
|
||||
extern template struct MAPNIK_DECL comp_op_rgba_value<agg::rgba8, agg::order_rgba>;
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
typedef blender_rgba<rgba8, order_rgba> blender_rgba32; //----blender_rgba32
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -92,7 +92,7 @@ class buffer_stack
|
|||
|
||||
void pop()
|
||||
{
|
||||
// ^ ensure iterator is not out-of-range
|
||||
// ^ ensure irator is not out-of-range
|
||||
// prior calling this method
|
||||
++position_;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -175,14 +175,14 @@ struct symbolizer_attributes
|
|||
|
||||
void operator()(raster_symbolizer const& sym)
|
||||
{
|
||||
const auto filter_factor = get_optional<double>(sym, keys::filter_factor);
|
||||
boost::optional<double> filter_factor = get_optional<double>(sym, keys::filter_factor);
|
||||
if (filter_factor)
|
||||
{
|
||||
filter_factor_ = *filter_factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto scaling_method = get_optional<scaling_method_e>(sym, keys::scaling);
|
||||
boost::optional<scaling_method_e> scaling_method = get_optional<scaling_method_e>(sym, keys::scaling);
|
||||
if (scaling_method && *scaling_method != SCALING_NEAR)
|
||||
{
|
||||
filter_factor_ = 2;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -34,7 +34,7 @@ class cairo_context;
|
|||
|
||||
void render_vector_marker(cairo_context& context,
|
||||
svg_path_adapter& svg_path,
|
||||
svg::group const& group_attr,
|
||||
svg_attribute_type const& attributes,
|
||||
box2d<double> const& bbox,
|
||||
agg::trans_affine const& tr,
|
||||
double opacity);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -56,11 +56,11 @@ struct cairo_renderer_process_visitor_p
|
|||
cairo_context context(cairo);
|
||||
|
||||
svg_storage_type& svg = *marker.get_data();
|
||||
auto const& svg_group = svg.svg_group();
|
||||
svg_attribute_type const& svg_attributes = svg.attributes();
|
||||
svg::vertex_stl_adapter<svg::svg_path_storage> stl_storage(svg.source());
|
||||
svg::svg_path_adapter svg_path(stl_storage);
|
||||
|
||||
render_vector_marker(context, svg_path, svg_group, bbox, tr, opacity_);
|
||||
render_vector_marker(context, svg_path, svg_attributes, bbox, tr, opacity_);
|
||||
|
||||
return surface;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -94,7 +94,7 @@ struct coord<T, 2>
|
|||
}
|
||||
|
||||
template<typename T2>
|
||||
bool operator==(coord<T2, 2> const& rhs) const
|
||||
bool operator==(coord<T2, 2> const& rhs)
|
||||
{
|
||||
return x == rhs.x && y == rhs.y;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -352,9 +352,9 @@ auto const rgb_color_def = lit("rgb")
|
|||
>> attr(255) >> lit(')');
|
||||
|
||||
auto const rgb_color_percent_def = lit("rgb")
|
||||
>> lit('(') >> double_[percent_red] >> lit('%')
|
||||
>> lit(',') >> double_[percent_green] >> lit('%')
|
||||
>> lit(',') >> double_[percent_blue] >> lit('%')
|
||||
>> lit('(') >> dec3[percent_red] >> lit('%')
|
||||
>> lit(',') >> dec3[percent_green] >> lit('%')
|
||||
>> lit(',') >> dec3[percent_blue] >> lit('%')
|
||||
>> attr(255) >> lit(')');
|
||||
|
||||
auto const rgba_color_def = lit("rgba")
|
||||
|
@ -364,24 +364,24 @@ auto const rgba_color_def = lit("rgba")
|
|||
>> lit(',') >> double_[opacity] >> lit(')');
|
||||
|
||||
auto const rgba_color_percent_def = lit("rgba")
|
||||
>> lit('(') >> double_[percent_red] >> lit('%')
|
||||
>> lit(',') >> double_[percent_green] >> lit('%')
|
||||
>> lit(',') >> double_[percent_blue] >> lit('%')
|
||||
>> lit('(') >> dec3[percent_red] >> lit('%')
|
||||
>> lit(',') >> dec3[percent_green] >> lit('%')
|
||||
>> lit(',') >> dec3[percent_blue] >> lit('%')
|
||||
>> lit(',') >> double_[opacity] >> lit(')');
|
||||
|
||||
auto const hsl_values = x3::rule<class hsl_values, std::tuple<std::uint16_t, double, double, double >> {} =
|
||||
auto const hsl_values = x3::rule<class hsl_values, std::tuple<std::uint16_t,std::uint8_t,std::uint8_t, double >> {} =
|
||||
lit("hsl")
|
||||
>> lit('(') >> dec3
|
||||
>> lit(',') >> double_ >> lit('%')
|
||||
>> lit(',') >> double_ >> lit('%')
|
||||
>> lit(',') >> dec3 >> lit('%')
|
||||
>> lit(',') >> dec3 >> lit('%')
|
||||
>> attr(1.0) >> lit(')')
|
||||
;
|
||||
|
||||
auto const hsla_values = x3::rule<class hsla_values, std::tuple<std::uint16_t, double, double, double >> {} =
|
||||
auto const hsla_values = x3::rule<class hsla_values, std::tuple<std::uint16_t,std::uint8_t,std::uint8_t, double >> {} =
|
||||
lit("hsla")
|
||||
>> lit('(') >> dec3
|
||||
>> lit(',') >> double_ >> lit('%')
|
||||
>> lit(',') >> double_ >> lit('%')
|
||||
>> lit(',') >> dec3 >> lit('%')
|
||||
>> lit(',') >> dec3 >> lit('%')
|
||||
>> lit(',') >> double_ >> lit(')')
|
||||
;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -38,7 +38,6 @@
|
|||
#include <map>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
|
@ -92,7 +91,7 @@ class MAPNIK_DECL datasource : private util::noncopyable
|
|||
// default implementation without context use features method
|
||||
return features(q);
|
||||
}
|
||||
virtual std::optional<datasource_geometry_t> get_geometry_type() const = 0;
|
||||
virtual boost::optional<datasource_geometry_t> get_geometry_type() const = 0;
|
||||
virtual featureset_ptr features(query const& q) const = 0;
|
||||
virtual featureset_ptr features_at_point(coord2d const& pt, double tol = 0) const = 0;
|
||||
virtual box2d<double> envelope() const = 0;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -41,10 +41,10 @@ class datasource;
|
|||
class parameters;
|
||||
class PluginInfo;
|
||||
|
||||
class MAPNIK_DECL datasource_cache : public singleton<datasource_cache, CreateStatic>,
|
||||
class MAPNIK_DECL datasource_cache : public singleton_cxx11<datasource_cache>,
|
||||
private util::noncopyable
|
||||
{
|
||||
friend class CreateStatic<datasource_cache>;
|
||||
friend class singleton_cxx11<datasource_cache>;
|
||||
|
||||
public:
|
||||
bool plugin_registered(const std::string& plugin_name) const;
|
||||
|
@ -66,7 +66,7 @@ class MAPNIK_DECL datasource_cache : public singleton<datasource_cache, CreateSt
|
|||
mutable std::recursive_mutex instance_mutex_;
|
||||
};
|
||||
|
||||
extern template class MAPNIK_DECL singleton<datasource_cache, CreateStatic>;
|
||||
extern template class MAPNIK_DECL singleton_cxx11<datasource_cache>;
|
||||
|
||||
} // namespace mapnik
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -45,7 +45,7 @@ namespace mapnik {
|
|||
// Global logger class that holds the configuration of severity, format
|
||||
// and file/console redirection.
|
||||
|
||||
class MAPNIK_DECL logger : public singleton<logger, CreateStatic>,
|
||||
class MAPNIK_DECL logger : public singleton_cxx11<logger>,
|
||||
private util::noncopyable
|
||||
{
|
||||
public:
|
||||
|
@ -96,7 +96,10 @@ class MAPNIK_DECL logger : public singleton<logger, CreateStatic>,
|
|||
}
|
||||
|
||||
// format
|
||||
static std::string const& get_format() { return format_; }
|
||||
static std::string const& get_format()
|
||||
{
|
||||
return format_;
|
||||
}
|
||||
|
||||
static void set_format(std::string const& format)
|
||||
{
|
||||
|
@ -208,7 +211,10 @@ class base_log : public util::noncopyable
|
|||
|
||||
private:
|
||||
#ifdef MAPNIK_LOG
|
||||
inline bool check_severity() { return Severity >= logger::get_object_severity(object_name_); }
|
||||
inline bool check_severity()
|
||||
{
|
||||
return Severity >= logger::get_object_severity(object_name_);
|
||||
}
|
||||
|
||||
typename output_policy::stream_buffer streambuf_;
|
||||
std::string object_name_;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -35,7 +35,11 @@
|
|||
#include <tuple>
|
||||
#include <stdexcept>
|
||||
#include <map>
|
||||
#if __cpp_lib_string_view >= 201606L
|
||||
#include <string_view>
|
||||
#endif
|
||||
|
||||
#include <mapnik/warning.hpp>
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
|
@ -58,9 +62,60 @@ class illegal_enum_value : public std::exception
|
|||
};
|
||||
|
||||
namespace detail {
|
||||
#if __cpp_lib_string_view >= 201606L
|
||||
using mapnik_string_view = std::string_view;
|
||||
#else
|
||||
class mapnik_string_view // use std::string_view in C++17
|
||||
{
|
||||
public:
|
||||
|
||||
template<std::size_t N>
|
||||
constexpr mapnik_string_view(const char (&s)[N])
|
||||
: size_(N)
|
||||
, data_(s)
|
||||
{}
|
||||
|
||||
constexpr mapnik_string_view(const char* s, std::size_t N)
|
||||
: size_(N)
|
||||
, data_(s)
|
||||
{}
|
||||
|
||||
constexpr char operator[](std::size_t index) const
|
||||
{
|
||||
return (index >= size_) ? throw std::out_of_range("Invalid index.") : data_[index];
|
||||
}
|
||||
|
||||
constexpr char const* data() const { return data_; }
|
||||
|
||||
private:
|
||||
std::size_t size_;
|
||||
const char* data_;
|
||||
};
|
||||
|
||||
constexpr bool mapnik_string_view_equals(mapnik_string_view const& a, char const* b, std::size_t i)
|
||||
{
|
||||
if (a[i] != b[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (a[i] == 0 || b[i] == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return mapnik_string_view_equals(a, b, i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
constexpr bool operator==(mapnik_string_view const& a, char const* b)
|
||||
{
|
||||
return mapnik_string_view_equals(a, b, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
template<class EnumT>
|
||||
using EnumStringT = std::tuple<EnumT, std::string_view>;
|
||||
using EnumStringT = std::tuple<EnumT, mapnik_string_view>;
|
||||
|
||||
template<class EnumT, std::size_t N>
|
||||
using EnumMapT = std::array<EnumStringT<EnumT>, N>;
|
||||
|
@ -94,7 +149,9 @@ struct MAPNIK_DECL enumeration
|
|||
{
|
||||
using native_type = ENUM;
|
||||
constexpr operator ENUM() const { return value_; }
|
||||
// constexpr bool operator==(const enumeration_new& rhs) { return value_ == rhs.value_; }
|
||||
void operator=(ENUM v) { value_ = v; }
|
||||
void operator=(const enumeration& other) { value_ = other.value_; }
|
||||
|
||||
enumeration()
|
||||
: value_()
|
||||
|
@ -134,12 +191,12 @@ struct MAPNIK_DECL enumeration
|
|||
std::map<enum_class, std::string> fnc_name##_lookup() \
|
||||
{ \
|
||||
std::map<enum_class, std::string> val_map; \
|
||||
std::transform(fnc_name##_map.begin(), \
|
||||
std::transform( \
|
||||
fnc_name##_map.begin(), \
|
||||
fnc_name##_map.end(), \
|
||||
std::inserter(val_map, val_map.end()), \
|
||||
[](const mapnik::detail::EnumStringT<enum_class>& val) { \
|
||||
return std::pair<enum_class, std::string>{std::get<0>(val), \
|
||||
std::string{std::get<1>(val).data()}}; \
|
||||
return std::pair<enum_class, std::string>{std::get<0>(val), std::string{std::get<1>(val).data()}}; \
|
||||
}); \
|
||||
return val_map; \
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -131,11 +131,11 @@ struct evaluate_expression
|
|||
};
|
||||
|
||||
template<typename T>
|
||||
struct evaluate_expression<T, std::nullopt_t>
|
||||
struct evaluate_expression<T, boost::none_t>
|
||||
{
|
||||
using value_type = T;
|
||||
|
||||
evaluate_expression(std::nullopt_t) {}
|
||||
evaluate_expression(boost::none_t) {}
|
||||
|
||||
value_type operator()(attribute const&) const
|
||||
{
|
||||
|
@ -265,7 +265,7 @@ std::tuple<T, bool> pre_evaluate_expression(expression_ptr const& expr)
|
|||
{
|
||||
try
|
||||
{
|
||||
return std::make_tuple(util::apply_visitor(mapnik::evaluate_expression<T, std::nullopt_t>(std::nullopt), *expr),
|
||||
return std::make_tuple(util::apply_visitor(mapnik::evaluate_expression<T, boost::none_t>(boost::none), *expr),
|
||||
true);
|
||||
}
|
||||
catch (...)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -29,6 +29,7 @@
|
|||
MAPNIK_DISABLE_WARNING_PUSH
|
||||
MAPNIK_DISABLE_UNUSED_VARIABLE
|
||||
#include <mapnik/warning_ignore.hpp>
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/msm/back/state_machine.hpp>
|
||||
#include <boost/msm/front/state_machine_def.hpp>
|
||||
#include <boost/msm/front/functor_row.hpp>
|
||||
|
@ -36,7 +37,6 @@ MAPNIK_DISABLE_WARNING_POP
|
|||
|
||||
// stl
|
||||
#include <cmath>
|
||||
#include <optional>
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
|
@ -91,7 +91,7 @@ struct store
|
|||
{
|
||||
m.v2 = m.v1;
|
||||
m.v1 = e.vertex;
|
||||
m.output = std::nullopt;
|
||||
m.output = boost::none;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -177,7 +177,7 @@ struct extender_def : public msm::front::state_machine_def<extender_def>
|
|||
: extend_length(extend_length)
|
||||
{}
|
||||
|
||||
std::optional<vertex2d> output;
|
||||
boost::optional<vertex2d> output;
|
||||
vertex2d v1, v2;
|
||||
double extend_length;
|
||||
};
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -33,7 +33,7 @@
|
|||
namespace mapnik {
|
||||
|
||||
template<typename product_type, typename key_type, typename... Args>
|
||||
class factory : public singleton<factory<product_type, key_type, Args...>>
|
||||
class factory : public singleton_cxx11<factory<product_type, key_type, Args...>>
|
||||
{
|
||||
private:
|
||||
using product_creator = product_type* (*)(Args...);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -47,11 +47,7 @@ struct layer_rendering_material;
|
|||
enum eAttributeCollectionPolicy { DEFAULT = 0, COLLECT_ALL = 1 };
|
||||
|
||||
template<typename Processor>
|
||||
#ifdef __GNUC__
|
||||
class MAPNIK_DECL feature_style_processor
|
||||
#else
|
||||
class feature_style_processor
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
explicit feature_style_processor(Map const& m, double scale_factor = 1.0);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -248,7 +248,7 @@ void feature_style_processor<Processor>::prepare_layer(layer_rendering_material&
|
|||
box2d<double> buffered_query_ext(query_ext); // buffered
|
||||
|
||||
double buffer_padding = 2.0 * scale * p.scale_factor();
|
||||
const auto layer_buffer_size = lay.buffer_size();
|
||||
boost::optional<int> layer_buffer_size = lay.buffer_size();
|
||||
if (layer_buffer_size) // if layer overrides buffer size, use this value to compute buffered extent
|
||||
{
|
||||
buffer_padding *= *layer_buffer_size;
|
||||
|
@ -261,7 +261,7 @@ void feature_style_processor<Processor>::prepare_layer(layer_rendering_material&
|
|||
buffered_query_ext.height(query_ext.height() + buffer_padding);
|
||||
|
||||
// clip buffered extent by maximum extent, if supplied
|
||||
auto&& maximum_extent = m_.maximum_extent();
|
||||
boost::optional<box2d<double>> const& maximum_extent = m_.maximum_extent();
|
||||
if (maximum_extent)
|
||||
{
|
||||
buffered_query_ext.clip(*maximum_extent);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -28,15 +28,21 @@
|
|||
#include <mapnik/enumeration.hpp>
|
||||
#include <mapnik/image_filter_types.hpp>
|
||||
#include <mapnik/image_compositing.hpp>
|
||||
#include <mapnik/rule.hpp>
|
||||
|
||||
#include <mapnik/warning.hpp>
|
||||
MAPNIK_DISABLE_WARNING_PUSH
|
||||
#include <mapnik/warning_ignore.hpp>
|
||||
#include <boost/optional.hpp>
|
||||
MAPNIK_DISABLE_WARNING_POP
|
||||
|
||||
// stl
|
||||
#include <vector>
|
||||
#include <cstddef>
|
||||
#include <optional>
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
class rule;
|
||||
|
||||
enum class filter_mode_enum { FILTER_ALL, FILTER_FIRST, filter_mode_enum_MAX };
|
||||
|
||||
DEFINE_ENUM(filter_mode_e, filter_mode_enum);
|
||||
|
@ -52,7 +58,7 @@ class MAPNIK_DECL feature_type_style
|
|||
std::vector<filter::filter_type> filters_;
|
||||
std::vector<filter::filter_type> direct_filters_;
|
||||
// comp-op
|
||||
std::optional<composite_mode_e> comp_op_;
|
||||
boost::optional<composite_mode_e> comp_op_;
|
||||
float opacity_;
|
||||
bool image_filters_inflate_;
|
||||
friend void swap(feature_type_style& lhs, feature_type_style& rhs);
|
||||
|
@ -83,7 +89,7 @@ class MAPNIK_DECL feature_type_style
|
|||
std::vector<filter::filter_type>& direct_image_filters();
|
||||
// compositing
|
||||
void set_comp_op(composite_mode_e comp_op);
|
||||
std::optional<composite_mode_e> comp_op() const;
|
||||
boost::optional<composite_mode_e> comp_op() const;
|
||||
void set_opacity(float opacity);
|
||||
float get_opacity() const;
|
||||
void set_image_filters_inflate(bool inflate);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -41,21 +41,22 @@ struct MAPNIK_DECL Featureset : private util::noncopyable
|
|||
virtual ~Featureset() {}
|
||||
};
|
||||
|
||||
struct MAPNIK_DECL empty_featureset : Featureset
|
||||
struct MAPNIK_DECL invalid_featureset final : Featureset
|
||||
{
|
||||
feature_ptr next() { return feature_ptr(); }
|
||||
~invalid_featureset() {}
|
||||
};
|
||||
|
||||
using featureset_ptr = std::shared_ptr<Featureset>;
|
||||
|
||||
inline featureset_ptr make_empty_featureset()
|
||||
inline featureset_ptr make_invalid_featureset()
|
||||
{
|
||||
return std::make_shared<empty_featureset>();
|
||||
return std::make_shared<invalid_featureset>();
|
||||
}
|
||||
|
||||
inline bool is_empty(featureset_ptr const& ptr)
|
||||
inline bool is_valid(featureset_ptr const& ptr)
|
||||
{
|
||||
return (dynamic_cast<empty_featureset*>(ptr.get()) != nullptr) ? true : false;
|
||||
return (dynamic_cast<invalid_featureset*>(ptr.get()) == nullptr) ? true : false;
|
||||
}
|
||||
|
||||
} // namespace mapnik
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*****************************************************************************
|
||||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef MAPNIK_FILESYSTEM_HPP
|
||||
#define MAPNIK_FILESYSTEM_HPP
|
||||
|
||||
#ifdef USE_BOOST_FILESYSTEM
|
||||
#include <boost/filesystem/operations.hpp> // for absolute, exists, etc
|
||||
#include <boost/filesystem/path.hpp> // for path, operator/
|
||||
#else
|
||||
#include <filesystem>
|
||||
#endif
|
||||
|
||||
namespace mapnik {
|
||||
#ifdef USE_BOOST_FILESYSTEM
|
||||
namespace fs = boost::filesystem;
|
||||
using error_code = boost::system::error_code;
|
||||
#else
|
||||
namespace fs = std::filesystem;
|
||||
using error_code = std::error_code;
|
||||
#endif
|
||||
} // namespace mapnik
|
||||
|
||||
#endif // MAPNIK_FILESYSTEM_HPP
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -35,7 +35,11 @@
|
|||
#include <map>
|
||||
#include <utility> // pair
|
||||
#include <vector>
|
||||
#include <optional>
|
||||
|
||||
namespace boost {
|
||||
template<class T>
|
||||
class optional;
|
||||
}
|
||||
|
||||
namespace mapnik {
|
||||
|
||||
|
@ -46,10 +50,10 @@ using face_set_ptr = std::unique_ptr<font_face_set>;
|
|||
class font_face;
|
||||
using face_ptr = std::shared_ptr<font_face>;
|
||||
|
||||
class MAPNIK_DECL freetype_engine : public singleton<freetype_engine, CreateUsingNew>,
|
||||
class MAPNIK_DECL freetype_engine : public singleton_cxx11<freetype_engine>,
|
||||
private util::noncopyable
|
||||
{
|
||||
friend class CreateUsingNew<freetype_engine>;
|
||||
friend class singleton_cxx11<freetype_engine>;
|
||||
friend class Map;
|
||||
|
||||
public:
|
||||
|
@ -113,7 +117,7 @@ class MAPNIK_DECL face_manager
|
|||
face_ptr get_face(std::string const& name);
|
||||
face_set_ptr get_face_set(std::string const& name);
|
||||
face_set_ptr get_face_set(font_set const& fset);
|
||||
face_set_ptr get_face_set(std::string const& name, std::optional<font_set> fset);
|
||||
face_set_ptr get_face_set(std::string const& name, boost::optional<font_set> fset);
|
||||
stroker_ptr get_stroker() const { return stroker_; }
|
||||
|
||||
private:
|
||||
|
@ -128,7 +132,7 @@ class MAPNIK_DECL face_manager
|
|||
};
|
||||
|
||||
using face_manager_freetype = face_manager;
|
||||
extern template class MAPNIK_DECL singleton<freetype_engine, CreateUsingNew>;
|
||||
extern template class MAPNIK_DECL singleton_cxx11<freetype_engine>;
|
||||
} // namespace mapnik
|
||||
|
||||
#endif // MAPNIK_FONT_ENGINE_FREETYPE_HPP
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2024 Artem Pavlenko
|
||||
* Copyright (C) 2021 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue