diff options
| author | Pierre Grandin <grandinp@gmail.com> | 2017-05-07 20:44:37 -0700 |
|---|---|---|
| committer | Pierre Grandin <grandinp@gmail.com> | 2017-05-07 20:44:37 -0700 |
| commit | cb31919563b7e12f97394a9a05add27f7e57fa40 (patch) | |
| tree | d7bad9cdcea43e8a18d2797d92d068f1a28eed13 | |
| parent | c0ec6f112247aa87daa3dd73b7ea5618a61104e5 (diff) | |
| parent | 658060b86596efb270cfcd21e118a9071f5d5092 (diff) | |
| download | navit-cb31919563b7e12f97394a9a05add27f7e57fa40.tar.gz | |
Merge branch 'trunk' into audio_framework
143 files changed, 11826 insertions, 3690 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 42da1c7c1..fa4349947 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ set(NAVIT_VERSION_PATCH "1") set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}") set(PACKAGE_NAME "navit-git") -set(PACKAGE "navit") +set(PACKAGE "navit" CACHE STRING "Navit package name") set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}") set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") @@ -28,12 +28,19 @@ IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE) ENDIF(NOT CMAKE_BUILD_TYPE) +# binary name +set(NAVIT_BINARY navit CACHE STRING "Navit binary name") # install path -set(BIN_DIR bin) -set(SHARE_DIR share/navit) -set(LOCALE_DIR share/locale) -set(IMAGE_DIR share/navit/xpm) -set(MAN_DIR share/man/man1) +set(BIN_DIR bin CACHE PATH "Navit bin path") +add_definitions ("-DBIN_DIR=\"${BIN_DIR}\"") +set(SHARE_DIR share/navit CACHE PATH "Navit share path") +add_definitions ("-DSHARE_DIR=\"${SHARE_DIR}\"") +set(LOCALE_DIR share/locale CACHE PATH "Navit locale path") +add_definitions ("-DLOCALE_DIR=\"${LOCALE_DIR}\"") +set(IMAGE_DIR share/navit/xpm CACHE PATH "Navit image path") +add_definitions ("-DIMAGE_DIR=\"${IMAGE_DIR}\"") +set(MAN_DIR share/man/man1 CACHE PATH "Navit man path") +add_definitions ("-DMAN_DIR=\"${MAN_DIR}\"") # LIB_DIR IF(UNIX AND NOT ANDROID AND NOT APPLE) IF (NOT LIBDIR) @@ -41,10 +48,10 @@ IF(UNIX AND NOT ANDROID AND NOT APPLE) MESSAGE(STATUS "You can set it manually with -DLIBDIR=<value>") # check 64 bit IF (CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(LIB_DIR lib) + SET(LIB_DIR lib/navit CACHE PATH "Navit 32bit bin path") MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'") ELSE (CMAKE_SIZEOF_VOID_P EQUAL 4) - SET(LIB_DIR lib64) + SET(LIB_DIR lib64/navit CACHE PATH "Navit 64bit bin path") MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'") ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4) ELSE (NOT LIBDIR) @@ -52,12 +59,12 @@ IF(UNIX AND NOT ANDROID AND NOT APPLE) MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'") ENDIF (NOT LIBDIR) ELSE (UNIX AND NOT ANDROID AND NOT APPLE) - SET(LIB_DIR lib) + SET(LIB_DIR lib/navit CACHE PATH "Navit unix bin path") ENDIF (UNIX AND NOT ANDROID AND NOT APPLE) - foreach(EXTRA_MODULE ${EXTRA_MODULES}) add_module(${EXTRA_MODULE} "extra module specified" TRUE) endforeach() +add_definitions ("-DLIB_DIR=\"${LIB_DIR}\"") if (EXTRA_LIBS) list(APPEND NAVIT_LIBS ${EXTRA_LIBS}) @@ -85,7 +92,9 @@ add_module(graphics/gd "FreeType library not found" FALSE) add_module(graphics/gtk_drawing_area "FreeType library not found" FALSE) add_module(graphics/opengl "FreeType library not found" FALSE) add_module(graphics/sdl "Required library not found" FALSE) +add_module(graphics/egl "Required library not found" FALSE) add_module(graphics/qt_qpainter "Qt libraries not found" FALSE) +add_module(graphics/qt5 "Qt5 libraries not found" FALSE) add_module(gui/qml "Qt Declarative not found" FALSE) add_module(gui/gtk "GTK libs not found" FALSE) add_module(vehicle/gpsd "gpsd lib not found" FALSE) @@ -101,6 +110,7 @@ add_module(audio/player-mpd "mpd not found" FALSE) add_module(audio/player-stub "default" FALSE) add_module(audio/player-spotify "libspotify not found" FALSE) add_module(vehicle/gpsd_dbus "dbus-glib-1 not found" FALSE) +add_module(vehicle/qt5 "Qt5 libraries not found" FALSE) add_module(speech/speech_dispatcher "speech_dispatcher lib not found" FALSE) add_module(autoload/osso "Default" FALSE) add_module(map/garmin "Garmin library not found" FALSE) @@ -140,6 +150,9 @@ find_package(Glib) find_package(Gmodule) find_package(ZLIB) find_package(Freetype) +find_library(SDL2MAIN SDL2) +find_library(SDL2IMAGE SDL2_image) +find_library(GLES2 GLESv2) find_package(SDL) find_package(SDL_ttf) find_package(SDL_image) @@ -159,11 +172,27 @@ find_package(libspotify) libfind_pkg_check_modules(FONTCONFIG fontconfig) #Qt detection if (NOT DISABLE_QT) - # Unfortunately, CMake seems to ignore the "OPTIONAL_COMPONENTS" flag, - # and actually requires all components to be installed. Maybe this can - # be fixed later... - find_package(Qt4 4.7 COMPONENTS QtCore OPTIONAL_COMPONENTS QtGui QtXml QtDeclarative QtSvg) + find_package(Qt5Widgets) + find_package(Qt5Quick) + find_package(Qt5Positioning) + if (Qt5Widgets_FOUND OR Qt5Quick_FOUND OR Qt5Sensors_FOUND) + add_feature (USE_QWIDGET "Qt5 Qt5Widget not found" FALSE) + add_feature (USE_QML "Qt5 Qt5Quick not found" FALSE) + if (Qt5Widgets_FOUND OR Qt5Quick_FOUND) + find_package(Qt5Svg REQUIRED) + find_package(Qt5DBus REQUIRED) + endif (Qt5Widgets_FOUND OR Qt5Quick_FOUND) + if (Qt5Positioning_FOUND) + find_package(Qt5Sensors REQUIRED) + endif (Qt5Positioning_FOUND) + else (Qt5Widgets_FOUND OR Qt5Quick_FOUND OR Qt5Sensors_FOUND) + # Unfortunately, CMake seems to ignore the "OPTIONAL_COMPONENTS" flag, + # and actually requires all components to be installed. Maybe this can + # be fixed later... + find_package(Qt4 4.7 COMPONENTS QtCore OPTIONAL_COMPONENTS QtGui QtXml QtDeclarative QtSvg) + endif (Qt5Widgets_FOUND OR Qt5Quick_FOUND OR Qt5Sensors_FOUND) endif (NOT DISABLE_QT) + #pkg-config based detection find_package(PkgConfig) if(PKG_CONFIG_FOUND) @@ -282,6 +311,7 @@ else(FREETYPE_FOUND) set_with_reason(graphics/gtk_drawing_area "FreeType library not found" FALSE) set_with_reason(graphics/opengl "FreeType library not found" FALSE) set_with_reason(graphics/sdl "FreeType library not found" FALSE) + set_with_reason(graphics/egl "FreeType library not found" FALSE) endif(FREETYPE_FOUND) if(FONTCONFIG_FOUND) @@ -304,7 +334,30 @@ if (QT_FOUND) endif() endif() endif(QT_FOUND) - +if (Qt5Widgets_FOUND OR Qt5Quick_FOUND) + set(Qt5_ADDITIONAL_LIBRARIES "") + if(Qt5Widgets_FOUND) + set_with_reason(USE_QWIDGET "Qt5Widgets found" TRUE) + if(USE_QWIDGET) + set(Qt5_ADDITIONAL_LIBRARIES ${Qt5_ADDITIONAL_LIBRARIES} ${Qt5Widgets_LIBRARIES}) + endif() + endif() + if(Qt5Quick_FOUND) + set_with_reason(USE_QML "Qt5Quick found" TRUE) + if(USE_QML) + set(Qt5_ADDITIONAL_LIBRARIES ${Qt5_ADDITIONAL_LIBRARIES} ${Qt5Quick_LIBRARIES}) + endif() + endif() + set_with_reason(graphics/qt5 "Qt5 found" TRUE + ${Qt5_ADDITIONAL_LIBRARIES} + ${Qt5Svg_LIBRARIES} + ${Qt5DBus_LIBRARIES}) +endif () +if (Qt5Positioning_FOUND) + set_with_reason(vehicle/qt5 "Qt5 Positioning found" TRUE + ${Qt5Positioning_LIBRARIES} + ${Qt5Sensors_LIBRARIES}) +endif () if(GTK2_FOUND) # Include gtk.h with "SYSTEM" to avoid GCC compiler warning for gtkitemfactory.h. include_directories(SYSTEM ${GTK2_GTK_INCLUDE_DIR}) @@ -354,6 +407,11 @@ if(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND) set_with_reason(graphics/sdl "SDL/SDL_image libs found" TRUE ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY}) endif(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND) +if(SDL2MAIN AND SDL2IMAGE AND GLES2) + set_with_reason(graphics/egl "SDL2/SDL2_image libs found" TRUE ${SDL2MAIN} ${SDL2IMAGE} ${GLES2}) + message(STATUS "EGL libs found : ${SDL2MAIN} ${SDL2IMAGE} ${GLES2}") +endif(SDL2_FOUND AND SDL2IMAGE_FOUND AND GLES2) + if (LIBGPS_FOUND) if (LIBGPS_NEW_FOUND) set(VEHICLE_GPSD_REASON "gpsd lib found") @@ -619,7 +677,7 @@ if(CMAKE_SIZEOF_VOID_P LESS 8) set_with_reason(BUILD_MAPTOOL "maptool works only on 64 bit architectures" FALSE) endif() -set(LOCALEDIR "${LOCALE_DIR}/locale") +set(LOCALEDIR "${LOCALE_DIR}") find_program(BZCAT NAMES bzcat) if (SAMPLE_MAP) @@ -636,9 +694,6 @@ if (SAMPLE_MAP) endif(SAMPLE_MAP) if(ANDROID) - # for android API 3 compatiblity - SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,/data/data/org.navitproject.navit/lib/") - find_program(ANDROID_LOCATION NAMES android android.bat) find_program(ANT_LOCATION NAMES ant) if (NOT ANT_LOCATION) diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 7bc7d34d3..000000000 --- a/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -ACLOCAL_AMFLAGS= -I m4 -include $(top_srcdir)/Makefile.inc -SUBDIRS= -if USE_NATIVE_LANGUAGE_SUPPORT -XCFLAGS=-DINSTALLPREFIX=INSTALLDIR -if SUPPORT_WIN32 -XCFLAGS+=-DSUBLANG_BENGALI_BANGLADESH=0x03 -DSUBLANG_PUNJABI_PAKISTAN=0x03 -DSUBLANG_ROMANIAN_MOLDOVA=0x03 -if SUPPORT_WIN32CE -if SHARED_LIBNAVIT -XCFLAGS+=-L../navit/support/libc -lsupport_libc -AM_MAKEFLAGS=l=l -SUBDIRS+=navit/support/libc -endif -endif -endif -if SUPPORT_ANDROID -XCFLAGS+=-Xcompiler -nostartfiles -endif -export XCFLAGS -SUBDIRS+=intl po man -endif -SUBDIRS+=navit -pkgdoc_DATA = README -EXTRA_DIST = README COPYRIGHT LGPL-2 GPL-2 COPYING INSTALL contrib/android_build.sh contrib/sjjb_import.pl -DIST_SUBDIRS=intl po navit man diff --git a/Makefile.inc b/Makefile.inc deleted file mode 100644 index 22fd8023e..000000000 --- a/Makefile.inc +++ /dev/null @@ -1,15 +0,0 @@ -modulebindingdir=$(pkglibdir)/binding -modulemapdir=$(pkglibdir)/map -modulefontdir=$(pkglibdir)/font -modulegraphicsdir=$(pkglibdir)/graphics -moduleguidir=$(pkglibdir)/gui -modulespeechdir=$(pkglibdir)/speech -moduleosddir=$(pkglibdir)/osd -modulevehicledir=$(pkglibdir)/vehicle -moduleplugindir=$(pkglibdir)/plugin -moduleautoloaddir=$(pkglibdir)/autoload -pkgdocdir=$(pkgdatadir) -imagedir=$(pkgdatadir)/xpm -skinsdir=$(pkgdatadir)/skins -fontsdir=$(pkgdatadir)/fonts -mapsdir=$(pkgdatadir)/maps @@ -1,5 +1,19 @@ [](https://circleci.com/gh/navit-gps/navit) +Navit on Android tablet: + + + +Navit on Linux based Carputer: + + + +<p> +<a href="https://play.google.com/store/apps/details?id=org.navitproject.navit"><img src="http://switzerland.tasis.com/uploaded/images2/appstore_button_google.png" height="100"/></a> + +<a href="https://f-droid.org/repository/browse/?fdfilter=navit&fdid=org.navitproject.navit"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Get_it_on_F-Droid.svg/200px-Get_it_on_F-Droid.svg.png" height="100"/></a> +</p> + NavIT ===== diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 9638fd9ee..000000000 --- a/autogen.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ `uname` = Darwin ]; then - LIBTOOL=glibtool -else - LIBTOOL=libtool -fi - -for pkg in pkg-config $LIBTOOL automake aclocal autoreconf:autoconf autopoint:gettext -do - if ! ${pkg%%:*} --version >/dev/null - then - echo "You need to install ${pkg##*:}" - exit 1 - fi -done - -autoreconf --install -I m4 "$@" -echo "***** WARNING *****" -echo "Support for autotools will be removed soon from navit, please use cmake instead" -sleep 5 diff --git a/ci/basic_upload_apks.py b/ci/basic_upload_apks.py new file mode 100644 index 000000000..b4b439536 --- /dev/null +++ b/ci/basic_upload_apks.py @@ -0,0 +1,82 @@ +#!/usr/bin/python +# +# Copyright 2014 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the 'License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Uploads an apk to the beta track.""" + +import argparse +import sys +from apiclient import sample_tools +from oauth2client import client + +TRACK = 'beta' # Can be 'alpha', beta', 'production' or 'rollout' + +# Declare command-line flags. +argparser = argparse.ArgumentParser(add_help=False) +argparser.add_argument('package_name', + help='The package name. Example: com.android.sample') +argparser.add_argument('apk_file', + nargs='?', + default='test.apk', + help='The path to the APK file to upload.') + + +def main(argv): + # Authenticate and construct service. + service, flags = sample_tools.init( + argv, + 'androidpublisher', + 'v2', + __doc__, + __file__, parents=[argparser], + scope='https://www.googleapis.com/auth/androidpublisher') + + # Process flags and read their values. + package_name = flags.package_name + apk_file = flags.apk_file + + try: + edit_request = service.edits().insert(body={}, packageName=package_name) + result = edit_request.execute() + edit_id = result['id'] + + apk_response = service.edits().apks().upload( + editId=edit_id, + packageName=package_name, + media_body=apk_file).execute() + + print 'Version code %d has been uploaded' % apk_response['versionCode'] + + track_response = service.edits().tracks().update( + editId=edit_id, + track=TRACK, + packageName=package_name, + body={u'versionCodes': [apk_response['versionCode']]}).execute() + + print 'Track %s is set for version code(s) %s' % ( + track_response['track'], str(track_response['versionCodes'])) + + commit_request = service.edits().commit( + editId=edit_id, packageName=package_name).execute() + + print 'Edit "%s" has been committed' % (commit_request['id']) + + except client.AccessTokenRefreshError: + print ('The credentials have been revoked or expired, please re-run the ' + 'application to re-authorize') + +if __name__ == '__main__': + main(sys.argv) + diff --git a/ci/build.sh b/ci/build.sh index 7f8f46279..b5d81e9dc 100644 --- a/ci/build.sh +++ b/ci/build.sh @@ -1,3 +1,5 @@ +set -e + echo "$# build script (s) to run" for i in $(seq 1 $#); do diff --git a/ci/build_android.sh b/ci/build_android.sh index 610dbc6e2..93e250f95 100644 --- a/ci/build_android.sh +++ b/ci/build_android.sh @@ -5,22 +5,22 @@ export ARCH="arm" export START_PATH=~/ export SOURCE_PATH=$START_PATH"/"${CIRCLE_PROJECT_REPONAME}"/" export CMAKE_FILE=$SOURCE_PATH"/Toolchain/arm-eabi.cmake" -export ANDROID_NDK=~/android-ndk-r13 +export ANDROID_NDK=~/android-ndk-r11c export ANDROID_NDK_BIN=$ANDROID_NDK"/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin" export ANDROID_SDK="/usr/local/android-sdk-linux/" export ANDROID_SDK_PLATFORM_TOOLS=$ANDROID_SDK"/platform-tools" export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_PLATFORM_TOOLS:$PATH export BUILD_PATH=$START_PATH"/android-${ARCH}" -wget -nv -c http://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip -[ -d ~/android-ndk-r13 ] || unzip -q -d ~ android-ndk-r13-linux-x86_64.zip +wget -nv -c http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip +[ -d ~/android-ndk-r11c ] || unzip -q -d ~ android-ndk-r11c-linux-x86_64.zip [ -d $BUILD_PATH ] || mkdir -p $BUILD_PATH cd $BUILD_PATH android list targets -cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DCACHE_SIZE='(20*1024*1024)' -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=23 -DANDROID_NDK_API_VERSION=19 $SOURCE_PATH +cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DCACHE_SIZE='(20*1024*1024)' -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=25 -DANDROID_NDK_API_VERSION=19 $SOURCE_PATH make if [[ "${CIRCLE_BRANCH}" == "master" ]]; then diff --git a/ci/build_android_x86.sh b/ci/build_android_x86.sh index b42d03d9f..30ced4296 100644 --- a/ci/build_android_x86.sh +++ b/ci/build_android_x86.sh @@ -1,26 +1,26 @@ #!/bin/bash set -e -export arch="x86" +export ARCH="x86" export START_PATH=~/ export SOURCE_PATH=$START_PATH"/"${CIRCLE_PROJECT_REPONAME}"/" export CMAKE_FILE=$SOURCE_PATH"/Toolchain/i686-android.cmake" -export ANDROID_NDK=~/android-ndk-r13 +export ANDROID_NDK=~/android-ndk-r11c export ANDROID_NDK_BIN=$ANDROID_NDK"/toolchains/x86-4.9/prebuilt/linux-x86_64/bin" export ANDROID_SDK="/usr/local/android-sdk-linux/" export ANDROID_SDK_PLATFORM_TOOLS=$ANDROID_SDK"/platform-tools" export PATH=$ANDROID_NDK_BIN:$ANDROID_SDK_PLATFORM_TOOLS:$PATH export BUILD_PATH=$START_PATH"/android-${ARCH}" -wget -nv -c http://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip -[ -d ~/android-ndk-r13 ] || unzip -q -d ~ android-ndk-r13-linux-x86_64.zip +wget -nv -c http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip +[ -d ~/android-ndk-r11c ] || unzip -q -d ~ android-ndk-r11c-linux-x86_64.zip [ -d $BUILD_PATH ] || mkdir -p $BUILD_PATH cd $BUILD_PATH android list targets -cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=23 -DANDROID_NDK_API_VERSION=19 -DDISABLE_CXX=1 -DDISABLE_QT=1 $SOURCE_PATH +cmake -DCMAKE_TOOLCHAIN_FILE=$CMAKE_FILE -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=25 -DANDROID_NDK_API_VERSION=19 -DDISABLE_CXX=1 -DDISABLE_QT=1 $SOURCE_PATH make if [[ "${CIRCLE_BRANCH}" == "master" ]]; then diff --git a/ci/build_linux.sh b/ci/build_linux.sh index b5dc6c56b..096651453 100644 --- a/ci/build_linux.sh +++ b/ci/build_linux.sh @@ -1,6 +1,4 @@ -set -e -sudo apt-get install cmake libpng12-dev librsvg2-bin libfreetype6-dev libdbus-glib-1-dev g++ libgtk2.0-dev -mkdir ~/linux-bin && pushd ~/linux-bin +sudo apt-get install cmake libpng12-dev librsvg2-bin libfreetype6-dev libdbus-glib-1-dev g++ libgtk2.0-dev libqt5svg5-dev qtdeclarative5-qtquick2-plugin qtdeclarative5-window-plugin cmake_opts="-Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n -Dgraphics/gtk_drawing_area:BOOL=TRUE" @@ -10,8 +8,9 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun tar xfz ~/assets/cov-analysis-linux64-7.6.0.tar.gz export PATH=~/navit/cov-analysis-linux64-7.6.0/bin:$PATH - cov-build --dir cov-int cmake ~/navit/ ${cmake_opts} - cov-build --dir cov-int make + mkdir ~/linux-bin && cd ~/linux-bin + cov-build --dir cov-int cmake ~/${CIRCLE_PROJECT_REPONAME}/ ${cmake_opts} + cov-build --dir cov-int make || exit -1 tar czvf navit.tgz cov-int curl --form token=$COVERITY_TOKEN \ @@ -25,44 +24,17 @@ if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trun sed -i '/INTEGER/d' po/navit.pot cp po/navit.pot $CIRCLE_ARTIFACTS/ curl "https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload" -H "$lp_cookie" -H "Referer: https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload" -F file=@po/navit.pot | grep title - popd else - cmake ~/navit/ ${cmake_opts} - make - popd + mkdir ~/linux-bin && cd ~/linux-bin + cmake ~/${CIRCLE_PROJECT_REPONAME}/ ${cmake_opts} || exit -1 + make || exit -1 fi -if [[ "${CIRCLE_BRANCH}" == "audio_framework" ]]; then - sudo apt-get install libasound2-dev libasound2 - - # Test the mpd audio plugin build - sudo apt-get install mpc mpd - mkdir ~/linux_audio_mpd && pushd ~/linux_audio_mpd - cmake ~/navit/ ${cmake_opts} - make - echo "Checking if the libaudio_player-mpd.so was built" - [ -f navit/audio/player-mpd/.libs/libaudio_player-mpd.so ] || exit -1 - echo "SUCCESS" - popd - - - # Test the spotify audio plugin build - wget https://developer.spotify.com/download/libspotify/libspotify-12.1.51-Linux-x86_64-release.tar.gz - tar xfz libspotify-12.1.51-Linux-x86_64-release.tar.gz - pushd libspotify-12.1.51-Linux-x86_64-release - sudo make install prefix=/usr/local - popd - - mkdir ~/linux_audio_spotify && pushd ~/linux_audio_spotify - cmake ~/navit/ ${cmake_opts} - make - echo "Checking if the libaudio_player-spotify.so was built" - [ -f navit/audio/player-spotify/.libs/libaudio_player-spotify.so ] || exit -1 - echo "SUCCESS" - popd +if [[ "$CIRCLE_ARTIFACTS" != "" ]]; then + cp -r navit/xpm $CIRCLE_ARTIFACTS fi # Done with the builds tests. Running some app tests -bash ci/run_linux_tests.sh +bash ~/navit/ci/run_linux_tests.sh diff --git a/ci/build_tomtom_minimal.sh b/ci/build_tomtom_minimal.sh index a931ece4c..585f79316 100644 --- a/ci/build_tomtom_minimal.sh +++ b/ci/build_tomtom_minimal.sh @@ -37,12 +37,12 @@ mkdir -p ~/tomtom_assets if ! [ -e "~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ] then - wget -nv -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets + wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets fi -if ! test -f "~/tomtom_assets/libpng-1.6.27.tar.gz" - then - wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.27.tar.gz -P ~/tomtom_assets +if ! test -f "~/tomtom_assets/libpng-1.6.29.tar.gz" +then + wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.29.tar.gz -P ~/tomtom_assets fi # toolchain @@ -53,9 +53,9 @@ tar xzf ~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz # zlib cd /tmp -wget -nv -c http://zlib.net/zlib-1.2.8.tar.gz -tar xzf zlib-1.2.8.tar.gz -cd zlib-1.2.8 +wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz +tar xzf zlib-1.2.11.tar.gz +cd zlib-1.2.11 ./configure --prefix=$PREFIX make -j$JOBS make install @@ -71,8 +71,8 @@ make install # libpng cd /tmp/ -tar xzf ~/tomtom_assets/libpng-1.6.27.tar.gz -cd libpng-1.6.27/ +tar xzf ~/tomtom_assets/libpng-1.6.29.tar.gz +cd libpng-1.6.29/ ./configure --prefix=$PREFIX --host=$ARCH make -j$JOBS make install diff --git a/ci/build_tomtom_plugin.sh b/ci/build_tomtom_plugin.sh index 01710a0ab..6acf3b376 100644 --- a/ci/build_tomtom_plugin.sh +++ b/ci/build_tomtom_plugin.sh @@ -36,12 +36,12 @@ mkdir -p ~/tomtom_assets if ! [ -e "~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ] then - wget -nv -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets + wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets fi -if ! test -f "~/tomtom_assets/libpng-1.6.27.tar.gz" +if ! test -f "~/tomtom_assets/libpng-1.6.29.tar.gz" then - wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.27.tar.gz -P ~/tomtom_assets + wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.29.tar.gz -P ~/tomtom_assets fi # toolchain @@ -177,9 +177,9 @@ arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include espeakdsp.c -o espeakd # zlib cd /tmp -wget -nv -c http://zlib.net/zlib-1.2.8.tar.gz -tar xzf zlib-1.2.8.tar.gz -cd zlib-1.2.8 +wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz +tar xzf zlib-1.2.11.tar.gz +cd zlib-1.2.11 ./configure --prefix=$PREFIX make -j$JOBS make install @@ -195,8 +195,8 @@ make install # libpng cd /tmp/ -tar xzf ~/tomtom_assets/libpng-1.6.27.tar.gz -cd libpng-1.6.27/ +tar xzf ~/tomtom_assets/libpng-1.6.29.tar.gz +cd libpng-1.6.29/ ./configure --prefix=$PREFIX --host=$ARCH make -j$JOBS make install diff --git a/ci/pointer-64.png b/ci/pointer-64.png Binary files differnew file mode 100644 index 000000000..904f6878d --- /dev/null +++ b/ci/pointer-64.png diff --git a/ci/publish.sh b/ci/publish.sh new file mode 100644 index 000000000..a92f620b8 --- /dev/null +++ b/ci/publish.sh @@ -0,0 +1,17 @@ +ARCH="arm" + +cd ~/ +git clone git@github.com:navit-gps/infrastructure-blackbox.git +cd infrastructure-blackbox/keyrings/ +openssl aes-256-cbc -d -in keystore.gpg -k $KEY > ~/.keystore +openssl aes-256-cbc -d -in client_secrets.gpg -k $KEY > ~/navit/ci/client_secrets.json +openssl aes-256-cbc -d -in androidpublisher.gpg -k $KEY > androidpublisher.dat + +pip install google-api-python-client + +jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -storepass $SP $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk $key_name + +/usr/local/android-sdk-linux/build-tools/25.0.1/zipalign 4 $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk +# /usr/local/android-sdk-linux/build-tools/25.0.1/apksigner sign -v --ks-pass pass:$SP --key $key_name $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk +/usr/local/android-sdk-linux/build-tools/25.0.1/apksigner verify -v $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk +python ~/navit/ci/basic_upload_apks.py org.navitproject.navit $CIRCLE_ARTIFACTS/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk diff --git a/ci/run_linux_tests.sh b/ci/run_linux_tests.sh index c34ea0bfb..4c937dc7d 100644 --- a/ci/run_linux_tests.sh +++ b/ci/run_linux_tests.sh @@ -1,18 +1,66 @@ #!/bin/bash +linux_test () { + # create logs dir + mkdir $CIRCLE_ARTIFACTS/logs_${1} + + #run instance of navit and remember pid + ./navit >$CIRCLE_ARTIFACTS/logs_${1}/stdout.txt 2>$CIRCLE_ARTIFACTS/logs_${1}/stderr.txt & + pid=$! + + # give navit time to come up + sleep 5 + + # screen shot root window + import -window root $CIRCLE_ARTIFACTS/logs_${1}/default.png + + # run tests on X11 + bash ~/navit/ci/xdotools.sh ${1} + + # python ~/navit/ci/dbus_tests.py $CIRCLE_TEST_REPORTS/ + # dbus-send --print-reply --session --dest=org.navit_project.navit /org/navit_project/navit/default_navit org.navit_project.navit.navit.quit + + # kill navit instance + kill $pid +} + set -e pushd ~/linux-bin/navit/ + +# prepare environment by getting a map of berkley +cat > maps/berkeley.xml << EOF +<map type="binfile" data="\$NAVIT_SHAREDIR/maps/berkeley.bin" /> +EOF +wget http://sd-55475.dedibox.fr/berkeley.bin -O maps/berkeley.bin + +# back up config +cp navit.xml navit.xml.bak + +# run gtk test sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml -sed -i -e 's@name="Demo" profilename="car" enabled="no" active="yes"@name="Demo" profilename="car" enabled="yes" active="yes" follow="1" refresh="1"@' navit.xml +sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml +linux_test gtk_drawing_area -./navit & -pid=$! - -import -window root $CIRCLE_ARTIFACTS/default.png +# restore config +cp navit.xml.bak navit.xml +# run qt5 qwidget test +sed -i -e 's@graphics type="gtk_drawing_area"@graphics type="qt5" w="792" h="547" qt5_widget="qwidget"@' navit.xml +sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml +sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml +sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml +sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml +linux_test qt5_widget -python ~/navit/ci/dbus_tests.py $CIRCLE_TEST_REPORTS/ +# restore config +cp navit.xml.bak navit.xml +# run qt5 qml test +sed -i -e 's@graphics type="gtk_drawing_area"@graphics type="qt5" w="792" h="547" qt5_widget="qml"@' navit.xml +sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml +sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml +sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml +sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml +linux_test qt5_qml -dbus-send --print-reply --session --dest=org.navit_project.navit /org/navit_project/navit/default_navit org.navit_project.navit.navit.quit diff --git a/ci/setup_tomtom_requirements.sh b/ci/setup_tomtom_requirements.sh new file mode 100644 index 000000000..8ed1c158f --- /dev/null +++ b/ci/setup_tomtom_requirements.sh @@ -0,0 +1,208 @@ +#!/bin/sh +# this builds navit for tomtom +# in case you want to build a plugin for tomtom use build_tomtom_plugin.sh instead +# in case you want to build a standalone system +# https://github.com/george-hopkins/opentom +# https://github.com/gefin/opentom + +set -e + +export ARCH=arm-linux +cp Toolchain/$ARCH.cmake /tmp + +# toolchain +export TOMTOM_SDK_DIR=/opt/tomtom-sdk +mkdir -p $TOMTOM_SDK_DIR >/dev/null 2>&1 || export TOMTOM_SDK_DIR=$HOME/tomtom-sdk +export PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root +export PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH +export CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include" +export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include" +export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib" +export CC=$ARCH-gcc +export CXX=$ARCH-g++ +export LD=$ARCH-ld +export NM="$ARCH-nm -B" +export AR=$ARCH-ar +export RANLIB=$ARCH-ranlib +export STRIP=$ARCH-strip +export OBJCOPY=$ARCH-objcopy +export LN_S="ln -s" +export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig +JOBS=`getconf _NPROCESSORS_ONLN` + +echo "Jobs" +echo $JOBS + +mkdir -p ~/assets/tomtom/ + +if ! [ -e "~/assets/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ] + then + wget -nv -c http://www.tomtom.com/gpl/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/assets/tomtom +fi + +if ! test -f "~/assets/tomtom/libpng-1.6.29.tar.gz" +then + wget -nv -c ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.29.tar.gz -P ~/assets/tomtom +fi + +# toolchain +cd /tmp +mkdir -p $TOMTOM_SDK_DIR +tar xzf ~/assets/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -C $TOMTOM_SDK_DIR + +# zlib +cd /tmp +wget -nv -c http://zlib.net/zlib-1.2.9.tar.gz +tar xzf zlib-1.2.9.tar.gz +cd zlib-1.2.9 +./configure --prefix=$PREFIX +make -j$JOBS +make install + +# libxml +cd /tmp/ +wget -nv -c http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz +tar xzf libxml2-2.7.8.tar.gz +cd libxml2-2.7.8/ +./configure --prefix=$PREFIX --host=$ARCH --without-python +make -j$JOBS +make install + +# libpng +cd /tmp/ +tar xzf ~/assets/tomtom/libpng-1.6.29.tar.gz +cd libpng-1.6.29/ +./configure --prefix=$PREFIX --host=$ARCH +make -j$JOBS +make install + + +cd /tmp +wget -nv -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.0.tar.gz +tar xzf freetype-2.5.0.tar.gz +cd freetype-2.5.0 +./configure --prefix=$PREFIX --host=$ARCH +make -j$JOBS +make install + +freetype-config --cflags + +# glib +cd /tmp +wget -nv -c http://ftp.gnome.org/pub/gnome/sources/glib/2.25/glib-2.25.17.tar.gz +tar xzf glib-2.25.17.tar.gz +cd glib-2.25.17 +cat > tomtom.cache << EOF +glib_cv_long_long_format=ll +glib_cv_stack_grows=no +glib_cv_uscore=no +ac_cv_func_posix_getgrgid_r=yes +ac_cv_func_posix_getpwuid_r=yes +EOF +chmod a-w tomtom.cache +./configure --prefix=$PREFIX --host=$ARCH --cache-file=tomtom.cache +sed -i "s|cp xgen-gmc gmarshal.c |cp xgen-gmc gmarshal.c \&\& sed -i \"s\|g_value_get_schar\|g_value_get_char\|g\" gmarshal.c |g" gobject/Makefile +make -j$JOBS +make install + + +# tslib +cd /tmp +rm -rf tslib-svn +git clone https://github.com/playya/tslib-svn.git +cd tslib-svn +sed -i "s|AM_CONFIG_HEADER|AC_CONFIG_HEADERS|g" configure.ac +sed -i "119i\#ifdef EVIOCGRAB" plugins/input-raw.c +sed -i "124i\#endif" plugins/input-raw.c +sed -i "290i\#ifdef EVIOCGRAB" plugins/input-raw.c +sed -i "294i\#endif" plugins/input-raw.c +sed -i "s|# module_raw h3600|module_raw h3600|g" etc/ts.conf # tomtom go 710 +./autogen.sh +./configure --prefix=$PREFIX --host=$ARCH +make -j$JOBS +make install + + +cd /tmp +wget -nv -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz +tar xzf SDL-1.2.15.tar.gz +cd SDL-1.2.15 +wget -nv -c http://tracks.yaina.de/source/sdl-fbcon-notty.patch +patch -p0 -i sdl-fbcon-notty.patch +./configure --prefix=$PREFIX --host=$ARCH \ + --disable-esd --disable-cdrom --disable-joystick --disable-video-x11 \ + --disable-x11-vm --disable-dga --disable-video-x11-dgamouse \ + --disable-video-x11-xv --disable-video-x11-xinerama --disable-video-directfb \ + --enable-video-fbcon --disable-audio CFLAGS="$CFLAGS -DFBCON_NOTTY" +make -j$JOBS +make install + +# sdl test utilities +cd test +./configure --prefix=$PREFIX --host=$ARCH +make testvidinfo +cp testvidinfo $PREFIX/usr/bin/ + +# to find sdl-config +export PATH=$PREFIX/bin:$PATH + +# sdl image +cd /tmp +wget -nv -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz +tar xzf SDL_image-1.2.12.tar.gz +cd SDL_image-1.2.12 +./configure --prefix=$PREFIX --host=$ARCH +make -j$JOBS +make install + + + +# espeak +cd /tmp +# this one includes the precompiled voices +wget -nv -c http://freefr.dl.sourceforge.net/project/espeak/espeak/espeak-1.48/espeak-1.48.04-source.zip +unzip espeak-1.48.04-source.zip +cd espeak-1.48.04-source +sed -i "s/PREFIX=\/usr//g" src/Makefile +sed -i "s/DATADIR=\/usr\/share\/espeak-data/DATADIR=~\/share\/espeak-data/g" src/Makefile +sed -i "s/AUDIO = portaudio/#AUDIO = portaudio/g" src/Makefile +sed -i "s/-fvisibility=hidden//g" src/Makefile +cat src/Makefile +make -C src +cd src +sudo make install + +# http://forum.navit-project.org/viewtopic.php?f=17&t=568 +cd /tmp +arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include ~/navit/contrib/tomtom/espeakdsp.c -o espeakdsp + + + +# in the end we only want Navit locale +rm -r $PREFIX/share/locale + +# navit +cd ~/navit +sed -i "s|set ( TOMTOM_SDK_DIR /opt/tomtom-sdk )|set ( TOMTOM_SDK_DIR $TOMTOM_SDK_DIR )|g" /tmp/$ARCH.cmake +mkdir -p build +cd build +cmake ../ -DCMAKE_INSTALL_PREFIX=$PREFIX -DFREETYPE_INCLUDE_DIRS=$PREFIX/include/freetype2/ -Dsupport/gettext_intl=TRUE \ +-DHAVE_API_TOMTOM=TRUE -DXSLTS=tomtom -DAVOID_FLOAT=TRUE -Dmap/mg=FALSE -DUSE_PLUGINS=0 -DCMAKE_TOOLCHAIN_FILE=/tmp/$ARCH.cmake \ +-DDISABLE_QT=ON -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n +make -j$JOBS +make install +cd .. + + +# creating directories +OUT_PATH="/tmp/tomtom/sdcard" +rm -rf $OUT_PATH +mkdir -p $OUT_PATH +cd $OUT_PATH +mkdir -p navit SDKRegistry +cd navit +mkdir -p bin lib share sdl ts +cd share +mkdir -p fonts +cd .. + diff --git a/ci/xdotools.sh b/ci/xdotools.sh new file mode 100644 index 000000000..b745d9f39 --- /dev/null +++ b/ci/xdotools.sh @@ -0,0 +1,97 @@ +sudo apt-get install xdotool +# Use xinput test 4 when running x11vnc on the circleci server to find mouse coordinates + +FRAME_DIR=$CIRCLE_ARTIFACTS/logs_${1}/frames +LOGS_DIR=$CIRCLE_ARTIFACTS/logs_${1} + +[ -d $FRAME_DIR/ ] || mkdir $FRAME_DIR/ + +event=0 + +send_event (){ + file=`printf "%05d\n" $event` + + import -window root $FRAME_DIR/tmp.png + if [[ "$1" == "mousemove" ]]; then + composite -gravity NorthWest -geometry +$2+$3 ~/navit/ci/pointer-64.png $FRAME_DIR/tmp.png $FRAME_DIR/${file}.png + else + mv $FRAME_DIR/tmp.png $FRAME_DIR/${file}.png + fi + event=$((event+1)) + xdotool $@ + sleep 1 +} + + +# Center the view +send_event key KP_Enter # Open main menu +send_event key Down # Select 'Actions' +send_event key KP_Enter # Validate +send_event key Down # Scroll to 'Bookmarks' +send_event key Right # Scroll to 'Former destinations' +send_event key Right # Select 'Town' +send_event key KP_Enter # Validate +# Send 'Berk' +send_event key b +send_event key e +send_event key r +send_event key k +send_event key Down # Highlight search area +send_event key Down # Highlight first result +send_event key KP_Enter # Validate + +# Set the position +send_event mousemove 482 318 click 1 # Open main menu, clicking on a somewhat random position on the map +send_event key Down # Select 'Actions' +send_event key KP_Enter # Validate +send_event key Down # Scroll to 'Bookmarks' +send_event key Right # Scroll to 'Former destinations' +send_event key Right # Select current coordinates +send_event key KP_Enter # Validate + +# Set a destination +send_event key KP_Enter # Open main menu +send_event key Down # Select 'Actions' +send_event key KP_Enter # Validate +send_event key Down # Scroll to 'Bookmarks' +send_event key Right # Scroll to 'Former destinations' +send_event key Right # Select 'Town' +send_event key KP_Enter # Validate +# Send 'oakl' +send_event key o +send_event key a +send_event key k +send_event key l +send_event key Down # Highlight search area +send_event key Down # Highlight first result +send_event key KP_Enter # Validate + +# Switch to 3d view +send_event key KP_Enter # Open main menu +send_event key Down # Select 'Actions' +send_event key Right # Select 'Settings' +send_event key KP_Enter # Validate +send_event key Down # Select 'Display' +send_event key KP_Enter # Validate +send_event key Down # Scroll to 'Layout' +send_event key Right # Scroll to 'Fullscreen' +send_event key Right # Select '3d' +send_event key KP_Enter # Validate +# Send 'Berk' + +# capture 5 seconds of usage +for i in `seq 99994 99999`; do + import -window root $FRAME_DIR/${i}.png + sleep 1 +done + +# Quit +send_event key KP_Enter # Open main menu +send_event key Down # Select 'Actions' +send_event key Down # Select 'Route' +send_event key Right # Select 'About' +send_event key Right # Select 'Quit' +send_event key KP_Enter # Validate + +# Assemble the gif +convert -delay 100 -loop 0 $FRAME_DIR/*.png $LOGS_DIR/town_search.gif diff --git a/circle.yml b/circle.yml index 4b296a25c..9321c75b1 100644 --- a/circle.yml +++ b/circle.yml @@ -6,7 +6,6 @@ dependencies: - ~/.android - ~/android - "~/assets/" - - ~/tomtom_assets pre: - "[ -d ~/assets ] || mkdir ~/assets" - "[ -d ~/android ] || mkdir ~/android" @@ -31,6 +30,11 @@ test: files: - ci/build_*.sh deployment: + publish_to_playstore: + branch: master + owner: navit-gps + commands: + - bash ci/publish.sh merge_into_master: branch: trunk owner: navit-gps diff --git a/cmake/navit_macros.cmake b/cmake/navit_macros.cmake index 3baf5c9ed..6591d7463 100644 --- a/cmake/navit_macros.cmake +++ b/cmake/navit_macros.cmake @@ -70,7 +70,7 @@ macro(module_add_library MODULE_NAME ) set_target_properties( ${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/.libs") install(TARGETS ${MODULE_NAME} - DESTINATION ${LIB_DIR}/navit/${${MODULE_NAME}_TYPE} + DESTINATION ${LIB_DIR}/${${MODULE_NAME}_TYPE} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif() endmacro(module_add_library) diff --git a/configure.in b/configure.in deleted file mode 100644 index 67eca74c1..000000000 --- a/configure.in +++ /dev/null @@ -1,1336 +0,0 @@ -AC_INIT(navit, 0.5.0) -AC_CONFIG_MACRO_DIR([m4]) -SOURCE_MODE=svn - -AM_INIT_AUTOMAKE -AM_CONFIG_HEADER(config.h) - -AC_SUBST(SOURCE_MODE) -AM_CONDITIONAL(SOURCE_MODE_SVN, [test "x${SOURCE_MODE}" = "xsvn"]) - -if test "x${SOURCE_MODE}" = "xsvn" ; then - USE_MAINTAINER_MODE=yes -else - USE_MAINTAINER_MODE=no -fi - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is enabled by default (reason of inclusion of this function) - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -AM_MAINTAINER_MODE - - -plugins=yes; plugins_reason=default -postgresql=yes; postgresql_reason=default -samplemap=yes; samplemap_reason=default -binding_dbus=yes; binding_dbus_reason=default -binding_dbus_use_system_bus=no -binding_python=yes; binding_python_reason=default -binding_win32=no; binding_win32_reason=default -font_freetype=yes; font_freetype_reason=default -fontconfig=yes; fontconfig_reason=default -fribidi=yes; fribidi_reason=default -gui_gtk=no; gui_gtk_reason=default -gui_win32=no; gui_win32_reason=default -gui_internal=yes; gui_internal_reason=default -gui_qml=no; gui_qml_reason=default -graphics=yes; graphics_reason=default -graphics_gd=no; graphics_gd_reason=default -graphics_gtk_drawing_area=no; graphics_gtk_drawing_area_reason=default -graphics_qt_qpainter=yes; graphics_qt_qpainter_reason=default -graphics_null=yes; graphics_null_reason=default -graphics_opengl=yes; graphics_opengl_reason=default -graphics_sdl=yes; graphics_sdl_reason=default -graphics_win32=no; graphics_win32_reason=default -maptool=yes; maptool_reason=default -map_binfile=yes; map_binfile_reason=default -map_filter=yes; map_filter_reason=default -map_mg=yes; map_mg_reason=default -map_shapefile=yes; map_shapefile_reason=default -map_textfile=yes; map_textfile_reason=default -map_csv=yes; map_csv_reason=default -osd_core=yes; osd_core_reason=default -plugin_pedestrian=no; plugin_pedestrian_reason=default -routing=yes; routing_reason=default -speech_android=no; speech_android_reason=default -speech_cmdline=yes; speech_cmdline_reason=default -speech_dbus=no; speech_dbus_reason=default -speech_espeak=no; speech_espeak_reason=default -speech_speech_dispatcher=yes; speech_speech_dispatcher_reason=default -vehicle_demo=yes; vehicle_demo_reason=default -vehicle_file=yes; vehicle_file_reason=default -vehicle_gpsd=yes; vehicle_gpsd_reason=default -vehicle_gpsd_dbus=no; vehicle_gpsd_dbus_reason=default -vehicle_gypsy=yes; vehicle_gypsy_reason=default -vehicle_null=no; vehicle_null_reason=default -vehicle_wince=no; vehicle_wince_reason=default -vehicle_iphone=no; vehicle_iphone_reason=default -vehicle_android=no; vehicle_android_reason=default -graphics_android=no; graphics_android_reason=default -vehicle_maemo=no; vehicle_maemo_reason=default -vehicle_webos=no; vehicle_webos_reason=default - -shared_libnavit=no -LIBNAVIT=navit -bin_navit=yes - -AC_CANONICAL_HOST -win32=no -win32ce=no -case $host_os in -wince|mingw32ce|cegcc) - win32=yes - win32ce=yes - AC_DEFINE(HAVE_API_WIN32_BASE, 1, [Have Windows Base API]) - AC_DEFINE(HAVE_API_WIN32_CE, 1, [Have Windows CE API]) - AC_DEFINE(HAVE_PRAGMA_PACK, 1, [Have pragma pack]) - binding_win32=yes; binding_win32_reason="host_os is wince" - gui_win32=yes; gui_win32_reason="host_os is wince" - graphics_win32=yes; graphics_win32_reason="host_os is wince" - vehicle_wince=yes; vehcile_wince_reason="host_os is wince" - speech_espeak=yes; speech_espeak_reason="host_os is wince" - support_libpng=yes - maptool=no; maptool_reason="host_os is wince" - ;; -mingw32) - win32=yes - AC_DEFINE(HAVE_API_WIN32_BASE, 1, [Have Windows Base API]) - AC_DEFINE(HAVE_API_WIN32, 1, [Have Windows API]) - binding_win32=yes; binding_win32_reason="host_os is mingw32" - gui_win32=yes; gui_win32_reason="host_os is mingw32" - graphics_win32=yes; graphics_win32_reason="host_os is mingw32" - speech_espeak=yes; speech_espeak_reason="host_os is mingw32" - support_libpng=yes - ;; -linux*_android) - android=yes - shared_libnavit=yes - bin_navit=no - AC_DEFINE(HAVE_API_ANDROID, 1, [Have Android API]) - echo "void dl_unwind_find_exidx(void) {}" >crt0.c - $CC -c crt0.c - $AR r libg.a crt0.o - vehicle_android=yes; vehicle_android_reason="host_os is android" - graphics_android=yes; graphics_android_reason="host_os is android" - speech_android=yes; speech_android_reason="host_os is android" - MODULE_LDFLAGS="-module -Xcompiler -nostdlib -Xcompiler -Wl,-rpath -Xcompiler -Wl,/data/data/org.navitproject.navit/lib" - MODULE_LIBADD="-llog" - LIBNAVIT=_data_data_org.navitproject.navit_lib_navit - NAVIT_MODULE_LDFLAGS="$MODULE_LDFLAGS -L\$(top_builddir)/navit -l$LIBNAVIT" - ;; -esac -if test "x$win32" = "xyes" -then - NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/win32" - NAVIT_LIBS="$NAVIT_LIBS -L\$(top_builddir)/navit/support/win32 -lsupport_win32" - NAVIT_SOCKET_LDFLAGS="$MODULE_LDFLAGS -lws2_32" -fi - - -AM_CONDITIONAL(SUPPORT_WIN32, [test "x$win32" = "xyes"]) -AM_CONDITIONAL(SUPPORT_WIN32CE, [test "x$win32ce" = "xyes"]) -AM_CONDITIONAL(SUPPORT_ANDROID, [test "x$android" = "xyes"]) - -if test "x$support_libpng" = "xyes" -then - NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/libpng" - NAVIT_LIBS="$NAVIT_LIBS -L\$(top_builddir)/navit/support/libpng -lsupport_libpng" -fi -AM_CONDITIONAL(SUPPORT_LIBPNG, [test "x$support_libpng" = "xyes"]) - -AC_SUBST(MODULE_LDFLAGS) -AC_SUBST(MODULE_LIBADD) -AC_SUBST(NAVIT_MODULE_LDFLAGS) -AC_SUBST(NAVIT_SOCKET_LDFLAGS) - -LIBS="$LIBS -lm" -if test "$win32" == "no" -a test "$host_os" != "cygwin"; then - LIBS="$LIBS -rdynamic" -fi - -m4_ifndef([AC_USE_SYSTEM_EXTENSIONS], - [AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS], [AC_GNU_SOURCE])]) - -AC_USE_SYSTEM_EXTENSIONS - -m4_ifdef([AC_PROG_OBJC],[AC_PROG_OBJC]) -AC_PROG_CC -m4_ifdef([AC_PROG_OBJC],[AC_PROG_OBJC],[AC_SUBST([OBJC],["$CC"]) -AC_SUBST([OBJCFLAGS],["$CFLAGS"])]) -m4_ifndef([AC_PROG_OBJC],[_AM_DEPENDENCIES(OBJC)]) - -if eval "test x`uname` = xDarwin"; then - CFLAGS="$CFLAGS -I/opt/local/include -L/opt/local/lib" -fi -if eval "test x$GCC = xyes"; then - CFLAGS="$CFLAGS -Wall -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wreturn-type -D_GNU_SOURCE" -fi -AM_PROG_CC_C_O - -AC_PROG_CXX -if eval "test x$GXX = xyes"; then - CXXFLAGS="$CXXFLAGS -Wall -Wcast-align -Wpointer-arith -Wreturn-type -D_GNU_SOURCE" -fi - -PKG_CHECK_EXISTS -if test "x${cross_compiling}" = "xyes"; then - samplemap="no";samplemap_reason="not supported for cross compiling" - binding_python="no";binding_python_reason="not supported for cross compiling" - postgresql="no";postgresql_reason="not supported for cross compiling" - AC_MSG_CHECKING([for a C compiler for build tools]) - AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc) -else - CC_FOR_BUILD=$CC -fi -CCLD_FOR_BUILD="$CC_FOR_BUILD" -AC_SUBST(cross_compiling) -AM_CONDITIONAL(CROSS_COMPILING, test "x${cross_compiling}" = "xyes") -AC_SUBST(CC_FOR_BUILD) -AC_SUBST(CCLD_FOR_BUILD) - -# Endianness -# defines WORDS_BIGENDIAN for big-endian systems -AC_C_BIGENDIAN - -AC_ARG_ENABLE(variant, [ --enable-variant=something set variant], NAVIT_VARIANT=$enableval) -AC_SUBST(NAVIT_VARIANT) - -AC_ARG_ENABLE(cache-size, [ --enable-cache-size=size in bytes set cache size], AC_DEFINE_UNQUOTED(CACHE_SIZE,[${enableval}], [Size of Cache in Bytes]),AC_DEFINE(CACHE_SIZE,[1048576], [Size of Cache in Bytes])) - -AC_ARG_ENABLE(avoid-unaligned, [ --enable-avoid-unaligned avoid unaligned accesses], AVOID_UNALIGNED=$enableval, AVOID_UNALIGNED=no) -test x"${AVOID_UNALIGNED}" = xyes && AC_DEFINE(AVOID_UNALIGNED,[],Define to avoid unaligned access) - -AC_ARG_ENABLE(avoid-float, [ --enable-avoid-float avoid floating point calculations], AVOID_FLOAT=$enableval, AVOID_FLOAT=no) -test x"${AVOID_FLOAT}" = xyes && AC_DEFINE(AVOID_FLOAT,[],Define to avoid floating point) - -AC_ARG_ENABLE(transformation-roll, [ --enable-transformation-roll add support for specifying roll angle in transformation], ENABLE_ROLL=$enableval, ENABLE_ROLL=no) -test x"${ENABLE_ROLL}" = xyes && AC_DEFINE(ENABLE_ROLL,[],Define to add support for specifying roll angle in transformation) - -AC_ARG_ENABLE(hildon, [ --disable-hildon build without maemo/hildon support], enable_hildon=$enableval, enable_hildon=yes) -if test "x${enable_hildon}" = "xyes" ; then - PKG_CHECK_MODULES(HILDON, hildon-1 >= 0.9.9, , [ - AC_MSG_RESULT(no) - enable_hildon=no - ]) - PKG_CHECK_MODULES(GPSBT, gpsbt, [ - AC_DEFINE(HAVE_GPSBT, 1, [Have the gpsbt library]) - AC_SUBST(GPSBT_CFLAGS) - AC_SUBST(GPSBT_LIBS) - ], [ - AC_MSG_RESULT(no) - ]) - if test x"${enable_hildon}" = xyes ; then - AC_DEFINE(USE_HILDON, 1, [Build with maemo/hildon support]) - AC_SUBST(HILDON_CFLAGS) - AC_SUBST(HILDON_LIBS) - fi -fi -AM_CONDITIONAL(USE_HILDON, test "${enable_hildon}" = "xyes") - -AC_ARG_ENABLE(osso, [ --disable-osso build without maemo/osso support], enable_osso=$enableval, enable_osso=yes) -if test "x${enable_osso}" = "xyes" ; then - PKG_CHECK_MODULES(LIBOSSO, libosso, , [ - AC_MSG_RESULT(no) - enable_osso=no - ]) - if test x"${enable_osso}" = xyes ; then - AC_DEFINE(USE_OSSO, 1, [Build with maemo/osso support]) - AC_SUBST(LIBOSSO_CFLAGS) - AC_SUBST(LIBOSSO_LIBS) - fi -fi -echo ${enable_osso} -AM_CONDITIONAL(USE_OSSO, test "x${enable_osso}" = "xyes") - -AC_ARG_ENABLE(garmin, [ --disable-garmin disable garmin support], USE_GARMIN=$enableval, USE_GARMIN=yes) - -# samplemap -AC_PATH_PROG(_PATH_BZCAT,[bzcat]) -if test "x${_PATH_BZCAT}" = "x" ; then - samplemap=no; samplemap_reason="bzcat missing" -fi -AC_ARG_ENABLE(maptool, [ --disable-maptool don't build maptool], maptool=$enableval;maptool_reason="configure parameter") -AM_CONDITIONAL(MAPTOOL, [test "x$maptool" = "xyes"]) -if test "x$maptool" != "xyes"; then - samplemap=no; samplemap_reason="maptool disabled" -fi -AC_ARG_ENABLE(samplemap, [ --disable-samplemap don't build the samplemap], samplemap=$enableval;samplemap_reason="configure parameter") -AM_CONDITIONAL(BUILD_SAMPLEMAP, [test "x$samplemap" = "xyes"]) - -AC_ARG_ENABLE(fastmath, [ --disable-fastmath don't build with fastmath], fastmath=$enableval, fastmath=yes) -AM_CONDITIONAL(FASTMATH, [test "x$fastmath" = "xyes"]) - -if test x"$fastmath" = xyes; then - if eval "test x$GCC = xyes"; then - CFLAGS="$CFLAGS -ffast-math" - fi -fi - -X_CFLAGS="-I$x_includes" -AS_IF([test -n "$ac_x_libraries"], [X_LIBS="-L$ac_x_libraries"]) - -# glib -AC_ARG_ENABLE(glib, [ --disable-glib don't build with external glib], glib=$enableval, glib=yes) -if test "x${glib}" = "xyes" -a "x${GLIB_CFLAGS}" = "x" -a "x${GLIB_LIBS}" = "x"; then - PKG_CHECK_MODULES(GLIB, [glib-2.0 gthread-2.0], [glib=yes],[glib=no]) -fi -if test "x${glib}" = "xyes"; then - AC_DEFINE(HAVE_GLIB, 1, [Define to 1 if you have (external) glib library]) -else - GLIB_CFLAGS="-I\$(top_srcdir)/navit/support -I\$(top_srcdir)/navit/support/glib -I\$(top_srcdir)/navit/support/ezxml" - GLIB_LIBS="-L\$(top_builddir)/navit/support/glib -lsupport_glib -L\$(top_builddir)/navit/support/ezxml -lsupport_ezxml" - if test "x${win32}" != "xyes" -a "x${android}" != "xyes"; then - GLIB_LIBS="$GLIB_LIBS -lpthread" - fi -fi - -# gmodule -AC_ARG_ENABLE(gmodule, [ --disable-gmodule don't build with gmodule], gmodule=$enableval, gmodule=yes) -if test x"${gmodule}" = "xyes"; then - PKG_CHECK_MODULES(GMODULE, [gmodule-2.0], [gmodule=yes], [gmodule=no]) -fi -if test "x${gmodule}" = "xyes"; then - AC_DEFINE(HAVE_GMODULE, 1, [Define to 1 if you have gmodule]) -else - AC_CHECK_LIB(dl, dlopen, - [plugins_reason="default, via dlopen";GMODULE_LIBS="-ldl";AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if you have dlopen])], - [plugins="no"; plugins_reason="package gmodule and dlopen missing"] - ) -fi - -# libcrypto -AC_CHECK_LIB(crypto, AES_encrypt, [CRYPTO_LIBS="-lcrypto";AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have libcrypto])]) -AC_SUBST(CRYPTO_LIBS) - -# plugins -AC_ARG_ENABLE(plugins, [ --disable-plugins disable plugins], [ plugins=$enableval;plugin_reason="configure parameter" ]) -AC_ARG_ENABLE(shared-libnavit, [ --enable-shared-libnavit], [ shared_libnavit=$enableval]) -if test "x${plugins}" = "xyes"; then - AC_ENABLE_SHARED - AC_DISABLE_STATIC - AC_DEFINE( - [USE_PLUGINS], - [], - Define to 1 if you have plugins. - ) - if test "x${win32}" = "xyes"; then - shared_libnavit=yes - NAVIT_MODULE_LDFLAGS="-no-undefined -L\$(top_builddir)/navit -l$LIBNAVIT -L\$(top_builddir)/intl -lintl" - fi -else - if test "x${shared_libnavit}" = "xyes"; then - AC_ENABLE_SHARED - AC_DISABLE_STATIC - else - AC_DISABLE_SHARED - AC_ENABLE_STATIC - fi -fi -AM_CONDITIONAL(PLUGINS, [test "x$plugins" = "xyes"]) -AM_CONDITIONAL(SHARED_LIBNAVIT, [test "x$shared_libnavit" = "xyes"]) -AM_CONDITIONAL(BIN_NAVIT, [test "x$bin_navit" = "xyes"]) -AC_PROG_LIBTOOL -AC_SUBST(LIBNAVIT) - -AM_CONDITIONAL(EVENT_GLIB, [test "x$glib" = "xyes"]) -AM_CONDITIONAL(SUPPORT_GLIB, [test "x$glib" = "xno"]) -AM_CONDITIONAL(SUPPORT_EZXML, [test "x$glib" = "xno"]) - -AC_CHECK_HEADER([sys/time.h], - [AC_DEFINE( - [HAVE_SYS_TIME_H], - [1], - [Define to 1 if you have the <sys/time.h> header file.]) - ]) - -if test "x${ZLIB_CFLAGS}" = "x" -a "x${ZLIB_LIBS}" = "x"; then -AC_CHECK_HEADER( - zlib.h, - AC_DEFINE( - [HAVE_ZLIB], - [], - Define to 1 if you have the <zlib.h> header file. - ) - ZLIB_LIBS="-lz" - zlib=yes, - ZLIB_CFLAGS="-I\$(top_srcdir)/navit/support/zlib" - ZLIB_LIBS="-L\$(top_builddir)/navit/support/zlib -lsupport_zlib" - zlib=no -) -else - zlib=yes -fi -AM_CONDITIONAL(SUPPORT_ZLIB, [test "x$zlib" = "xno"]) -AC_SUBST(ZLIB_CFLAGS) -AC_SUBST(ZLIB_LIBS) - -AC_CHECK_HEADER(sys/socket.h, AC_DEFINE([HAVE_SOCKET],[],Define to 1 if you have sockets)) -AC_CHECK_HEADER(winsock2.h, AC_DEFINE([HAVE_WINSOCK],[],Define to 1 if you have Windows sockets)) - -# gtk -PKG_CHECK_MODULES(GTK2, [gtk+-2.0], [gtk2_pkgconfig=yes], [gtk2_pkgconfig=no]) -if test "x$gtk2_pkgconfig" = "xyes"; then - AC_DEFINE(HAVE_GTK2, 1, [Define to 1 if you have gtk2]) - graphics_gtk_drawing_area=yes; graphics_gtk_drawing_area_reason="gtk+-2.0 present" - gui_gtk=yes; gui_gtk_reason="gtk+-2.0 present" -fi - -# fsync -AC_MSG_CHECKING(for fsync) -AC_TRY_LINK([#include <unistd.h>], [fsync(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_FSYNC, 1, [Define to 1 if you have the `fsync' function.]),AC_MSG_RESULT(no)) - -# system -AC_MSG_CHECKING(for system) -AC_TRY_LINK([#include <stdlib.h>], [system("/bin/true");],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SYSTEM, 1, [Define to 1 if you have the `system' function.]),speech_cmdline=no; speech_cmdline_reason="not supported without system()"; AC_MSG_RESULT(no)) - -AC_MSG_CHECKING(for CreateProcess) -AC_TRY_LINK([#include <windows.h>], [CreateProcess(NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_CREATEPROCESS, 1, [Define to 1 if you have the `CreateProcess' function.]) speech_cmdline=yes; speech_cmdline_reason="CreateProcess exists", AC_MSG_RESULT(no)) - -# sbrk -AC_MSG_CHECKING(for sbrk) -AC_TRY_LINK([#include <unistd.h>], [sbrk(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_SBRK, 1, [Define to 1 if you have the `sbrk' function.]),AC_MSG_RESULT(no)) - - -AC_ARG_ENABLE(graphics-sdl, [ --disable-graphics-sdl don't create graphics sdl], graphics_sdl=$enableval;graphics_sdl_reason="configure parameter") - -if test "x${graphics_sdl}" = "xyes" ; then - PKG_CHECK_MODULES(SDL, - [sdl], - [graphics_sdl="yes" - graphics_sdl_reason="sdl present"] , - [graphics_sdl="no" - graphics_sdl_reason="sdl not available"] - ) - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) -fi -if test "x${graphics_sdl}" = "xyes" ; then - save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$SDL_CFLAGS $CPPFLAGS" - AC_CHECK_HEADER(SDL_image.h,SDL_IMAGE_LIBS=-lSDL_image,graphics_sdl="no";graphics_sdl_reason="SDL_image.h missing") - AC_SUBST(SDL_IMAGE_LIBS) - CPPFLAGS=$save_CPPFLAGS -fi -if test "x${graphics_sdl}" = "xyes" ; then - AC_DEFINE(GRAPHICS_SDL, 1, [Build with graphics sdl]) -fi -AM_CONDITIONAL(GRAPHICS_SDL, test "x${graphics_sdl}" = "xyes") - -AC_ARG_ENABLE(postgresql, [ --disable-postgresql don't add postgresql support to maptool], postgresql=$enableval;postgresql_reason="configure parameter") -if test "x${postgresql}" = "xyes" ; then - if test -z "$PG_CONFIG"; then - AC_PATH_PROG([PG_CONFIG], [pg_config], []) - fi - AC_MSG_CHECKING([for PostgreSQL libraries with $PG_CONFIG]) - if test ! -x "$PG_CONFIG"; then - if test "x${PG_CONFIG}" = "x" ; then - postgresql_reason="$PG_CONFIG not executable" - else - postgresql_reason="pg_config missing" - fi - postgresql=no - AC_MSG_RESULT([no]) - else - POSTGRESQL_CFLAGS="-I`$PG_CONFIG --includedir`" - POSTGRESQL_LIBS="-L`$PG_CONFIG --libdir` -lpq" - AC_DEFINE(HAVE_POSTGRESQL, 1, [Postgresql libraries available]) - AC_SUBST(POSTGRESQL_CFLAGS) - AC_SUBST(POSTGRESQL_LIBS) - AC_MSG_RESULT([yes]) - fi -fi -AM_CONDITIONAL(HAVE_POSTGRESQL, test "x${postgresql}" = "xyes") -# font -# freetype -AC_ARG_ENABLE(font-freetype, [ --disable-font-freetype don't add freetype support], font_freetype=$enableval;font_freetype_reason="configure parameter") -if test "x${font_freetype}" = "xyes" -a "x${FREETYPE2_CFLAGS}" = "x" -a "x${FREETYPE2_LIBS}" = "x"; then - PKG_CHECK_MODULES(FREETYPE2, [freetype2], , [font_freetype=no;font_freetype_reason="Package freetype2 missing"]) -else - fribidi=no -fi -AC_SUBST(FREETYPE2_CFLAGS) -AC_SUBST(FREETYPE2_LIBS) -AM_CONDITIONAL(FONT_FREETYPE, test "x${font_freetype}" = "xyes") -AC_ARG_WITH(freetype-fonts, [ --with-freetype-fonts specify what fonts to use], AC_DEFINE_UNQUOTED(FREETYPE_FONTS,[${withval}],[Freetype fonts to use])) - -AC_ARG_ENABLE(fontconfig, [ --disable-fontconfig don't' add fontconfig support], fontconfig=$enableval;fontconfig_reason="configure parameter") -if test "x${fontconfig}" = "xyes"; then - PKG_CHECK_MODULES(FONTCONFIG, [fontconfig], [fontconfig=yes], [fontconfig=no]) -fi -if test "x$fontconfig" = "xyes"; then - AC_DEFINE(HAVE_FONTCONFIG, 1, [Define to 1 if you have fontconfig]) -fi -AC_SUBST(FONTCONFIG_CFLAGS) -AC_SUBST(FONTCONFIG_LIBS) - -AM_CONDITIONAL(FONTS, test "x${font_freetype}" = "xyes" -a "x$fontconfig" != "xyes") - -# fribidi -AC_ARG_ENABLE(fribidi, [ --disable-fribidi dont build with fribidi], fribidi=$enableval;fribidi_reason="configure parameter", fribidi=yes) -if test x"${fribidi}" = "xyes"; then - PKG_CHECK_MODULES(FRIBIDI2, [fribidi >= 0.19.0], [fribidi=yes;oldfribidi=no], - [ PKG_CHECK_MODULES([FRIBIDI], [fribidi], - [fribidi=yes;oldfribidi=yes;fribid_reason="using old version"], [fribidi=no;fribidi_reason="FriBidi library not found"]) - ]) -fi -if test x"${fribidi}" = "xyes"; then - AC_DEFINE(USE_FRIBIDI, 1, [Build with fribidi support]) -fi -if test x"${oldfribidi}" = "xyes"; then - AC_DEFINE(FRIBIDIOLD, 1, [Build with fribidi support for older versions of fribidi]) -fi - -AC_SUBST(FRIBIDI2_CFLAGS) -AC_SUBST(FRIBIDI2_LIBS) -AC_SUBST(FRIBIDI_CFLAGS) -AC_SUBST(FRIBIDI_LIBS) - -PKG_CHECK_MODULES(IMLIB2, [imlib2], [imlib2_pkgconfig=yes], [imlib2_pkgconfig=no]) -if test "x$imlib2_pkgconfig" = "xyes"; then - AC_DEFINE(HAVE_IMLIB2, 1, [Define to 1 if you have imlib2]) -fi -AC_SUBST(IMLIB2_CFLAGS) -AC_SUBST(IMLIB2_LIBS) - -AC_ARG_ENABLE(graphics-opengl, [ --disable-graphics-opengl disable graphics type OpenGL], graphics_opengl=$enableval;graphics_opengl_reason="configure parameter") -if test "x${graphics_opengl}" = "xyes" ; then - -AC_CHECK_HEADER( - GL/gl.h, - AC_DEFINE( - [HAVE_OPENGL], - [], - Define to 1 if you have the <GL/gl.h> header file. - ) - OPENGL_LIBS="$X_LIBS -lGL -lglut -lfreeimage" - opengl=yes, - AC_MSG_WARN([*** no GL/gl.h -- opengl graphics support disabled];graphics_opengl=no;graphics_opengl_reason="GL/gl.h header missing") -) - -AC_CHECK_HEADER( - GL/glut.h, - AC_DEFINE( - [HAVE_GLUT], - [], - Define to 1 if you have the <GL/glut.h> header file. - ) - glut=yes, - AC_MSG_WARN([*** no GL/glut.h -- opengl graphics support disabled]);graphics_opengl=no;graphics_opengl_reason="GL/glut.h header missing" -) - -AC_CHECK_HEADER( - GL/freeglut.h, - AC_DEFINE( - [HAVE_FREEGLUT], - [], - Define to 1 if you have the <GL/freeglut.h> header file. - ) - freeglut=yes, - AC_MSG_WARN([*** no GL/freeglut.h -- opengl support disabled]);graphics_opengl=no;graphics_opengl_reason="Headers missing" -) - -AC_SUBST(OPENGL_CFLAGS) -AC_SUBST(OPENGL_LIBS) - -AC_CHECK_HEADER( - GL/glc.h, - AC_DEFINE( - [HAVE_GLC], - [], - Define to 1 if you have the <GL/glc.h> header file. - ) - GLC_LIBS="-lGLC" - glc=yes, - AC_MSG_WARN([*** no GL/glc.h -- opengl graphics support disabled]);graphics_opengl=no;graphics_opengl_reason="GL/glc.h header missing" -) -AC_CHECK_HEADER( - FreeImage.h, - AC_DEFINE( - [HAVE_FREEIMAGE], - [1], - Define to 1 if you have the <FreeImage.h> header file. - ) - FREEIMAGE_LIBS="-lfreeimage" - freeimage=yes, - AC_MSG_WARN([*** no FreeImage.h -- opengl support disabled]);graphics_opengl=no;graphics_opengl_reason="Headers missing" -) -AC_SUBST(FREEIMAGE_LIBS) -AC_SUBST(GLC_CFLAGS) -AC_SUBST(GLC_LIBS) -fi - -AM_CONDITIONAL(GRAPHICS_OPENGL, [test "x$glut" = "xyes" -a "x$freeglut" = "xyes" -a "x$opengl" = "xyes" -a "x$freeimage" = "xyes" -a "x$glc" = "xyes" ]) - - -system_shapefile=no -if test x"${map_shapefile}" = xyes -then -AC_CHECK_HEADERS( - [shapefil.h libshp/shapefil.h], - [AC_DEFINE( - [HAVE_SYS_SHAPEFILELIB], - [1], - Define to 1 if you have the <shapefil.h> header file. - )], - [SHAPEFILE_CFLAGS="-I\$(top_srcdir)/navit/support/shapefile"] - ) - -AC_CHECK_LIB( - [shp], - [DBFDeleteField], - [SHAPEFILE_LIBS="-lshp" - system_shapefile=yes], - [SHAPEFILE_LIBS="-L\$(top_builddir)/navit/support/shapefile -lsupport_shapefile" - system_shapefile=no] - ) - -if test x"${system_shapefile}" = xno -then - AC_MSG_WARN([*** The shapefile library(libshp) from the system is to old or not found! -- using included copy]) -fi - -fi -AC_SUBST(SHAPEFILE_CFLAGS) -AC_SUBST(SHAPEFILE_LIBS) -AM_CONDITIONAL(HAVE_SYSTEM_SHAPEFILELIB, [test "x$system_shapefile" = "xyes" ]) - -if test x"${USE_GARMIN}" = xyes -then - # check for libgarmin - PKG_CHECK_MODULES(LIBGARMIN, libgarmin, use_libgarmin=yes, use_libgarmin=no) - AC_SUBST(LIBGARMIN_CFLAGS) - AC_SUBST(LIBGARMIN_LIBS) -fi - AM_CONDITIONAL(HAVELIBGARMIN, [test "x$use_libgarmin" = "xyes"]) - -## binding -# python -AC_ARG_ENABLE(binding-python, [ --disable-binding-python don't create binding python], binding_python=$enableval;binding_python_reason="configure parameter") -if test "x${binding_python}" = "xyes"; then - AC_PATH_PROG(_PATH_PYTHON,[python]) - dnl Libraries and flags for embedded Python. - dnl FIXME: I wish there was a less icky way to get this. - if test "x${_PATH_PYTHON}" != "x" ; then - AC_MSG_CHECKING(for Python linkage) - AC_PATH_PROG([PYTHONCONFIG], [python-config], []) - if test "x${PYTHONCONFIG}" = "x" ; then - py_prefix=`$_PATH_PYTHON -c 'import sys; print sys.prefix'` - py_ver=`$_PATH_PYTHON -c 'import sys; print sys.version[[:3]]'` - py_lib=`$_PATH_PYTHON -c 'import sys; print sys.lib'` - py_libdir="${py_prefix}/${py_lib}/python${py_ver}" - PYTHON_CFLAGS="-I${py_prefix}/include/python${py_ver}" - if test -f $py_libdir/config/Makefile -a -f $py_prefix/include/python${py_ver}/Python.h; then - py_libs=`grep '^LIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'` - py_libc=`grep '^LIBC=' $py_libdir/config/Makefile | sed -e 's/^.*=//'` - py_libm=`grep '^LIBM=' $py_libdir/config/Makefile | sed -e 's/^.*=//'` - py_liblocalmod=`grep '^LOCALMODLIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'` - py_libbasemod=`grep '^BASEMODLIBS=' $py_libdir/config/Makefile | sed -e 's/^.*=//'` - PYTHON_LIBS="-L$py_libdir/config $py_libs $py_libc $py_libm -lpython$py_ver $py_liblocalmod $py_libbasemod" - PYTHON_LIBS=`echo $PYTHON_LIBS | sed -e 's/[ \\t]*/ /g'` - AC_MSG_RESULT($py_libdir) - else - binding_python="no" - binding_python_reason="$py_libdir/config/Makefile or $py_prefix/include/python${py_ver}/Python.h missing" - fi - - else - PYTHON_CFLAGS="`${PYTHONCONFIG} --cflags`" - PYTHON_LIBS="`${PYTHONCONFIG} --ldflags`" - fi - else - binding_python="no" - binding_python_reason="python executable missing" - fi -fi -if test "x${binding_python}" = xyes ; then - AC_DEFINE(USE_BINDING_PYTHON, 1, [Build with binding python]) -fi -AC_SUBST(PYTHON_CFLAGS) -AC_SUBST(PYTHON_LIBS) -AM_CONDITIONAL(BINDING_PYTHON, test "x${binding_python}" = "xyes") - -# dbus -AC_ARG_ENABLE(binding-dbus, [ --disable-binding-dbus don't create binding dbus], binding_dbus=$enableval;binding_dbus_reason="configure parameter") -AC_ARG_ENABLE(binding-dbus-use-system-bus, [ --enable-binding-dbus-use-system-bus use system bus for dbus binding], binding_dbus_use_system_bus=$enableval) -if test "x${binding_dbus}" = "xyes" ; then - PKG_CHECK_MODULES(DBUS, [dbus-glib-1], ,binding_dbus=no) -fi -if test "x${binding_dbus}" = "xyes" ; then - AC_DEFINE(USE_BINDING_DBUS, 1, [Build with binding dbus]) - vehicle_gpsd_dbus="yes" - vehicle_gpsd_dbus_reason="dbus binding present" - speech_dbus="yes" - speech_dbus_reason="dbus binding present" -fi -if test "x${binding_dbus_use_system_bus}" = "xyes" ; then - AC_DEFINE(DBUS_USE_SYSTEM_BUS, 1, [Use system bus instead of session bus for binding dbus]) -fi -AC_SUBST(DBUS_CFLAGS) -AC_SUBST(DBUS_LIBS) -AM_CONDITIONAL(BINDING_DBUS, test "x${binding_dbus}" = "xyes") -AM_CONDITIONAL(VEHICLE_GPSD_DBUS, test "x${vehicle_gpsd_dbus}" = "xyes") -AM_CONDITIONAL(SPEECH_DBUS, test "x${speech_dbus}" = "xyes") -AC_ARG_WITH(dbus-service-dir, [ --with-dbus-service-dir specify where the dbus service dir resides], DBUS_SERVICE_DIR=$withval, DBUS_SERVICE_DIR="$datarootdir/dbus-1/services") -AC_SUBST(DBUS_SERVICE_DIR) - -# win32 binding -AC_ARG_ENABLE(binding-win32, [ --disable-binding-win32 don't create binding win32], binding_win32=$enableval;binding_win32_reason="configure parameter") -if test "x${binding_win32}" = "xyes" ; then - AC_DEFINE(USE_BINDING_WIN32, 1, [Build with binding win32]) -fi -AM_CONDITIONAL(BINDING_WIN32, test "x${binding_win32}" = "xyes") - -# svg -AC_ARG_ENABLE(svg, [ --disable-svg disable Scalable Vector Graphics], enable_svg=$enableval, enable_svg=yes) -AC_ARG_ENABLE(svg2png, [ --disable-svg2png disable conversion of svgs to pngs], enable_svg2png=$enableval, enable_svg2png=yes) -AC_ARG_ENABLE(svg2png-scaling, [ --enable-svg2png-scaling enable conversion of svgs to pngs with specified sizes], SVG2PNG_SCALES=$enableval, SVG2PNG_SCALES="8 16 32 48 96") -AC_ARG_ENABLE(svg2png-scaling-flag, [ --enable-svg2png-scaling-flag enable conversion of flag svgs to pngs with specified sizes], SVG2PNG_SCALES_FLAG=$enableval, SVG2PNG_SCALES_FLAG="8 16 32 48 96") -AC_ARG_ENABLE(svg2png-scaling-nav, [ --enable-svg2png-scaling-nav enable conversion of nav svgs to pngs with specified sizes], SVG2PNG_SCALES_NAV=$enableval, SVG2PNG_SCALES_NAV="8 16 32 48 96") -AC_ARG_WITH(svg2png-use-convert, [ --with-svg2png-use-convert use imagemagick's convert for png creation], SVG2PNG_CONVERTER="convert") -AC_ARG_WITH(svg2png-use-rsvg-convert, [ --with-svg2png-use-rsvg-convert use librsvg's rsvg-convert for png creation], SVG2PNG_CONVERTER="rsvg-convert") -AC_ARG_WITH(svg2png-use-inkscape, [ --with-svg2png-use-inkscape use inkscapes internal convert routines for png creation], SVG2PNG_CONVERTER="inkscape") -AC_ARG_WITH(svg2png-use-ksvgtopng4, [ --with-svg2png-use-ksvgtopng4 use kde4's ksvgtopng4 for png creation], SVG2PNG_CONVERTER="ksvgtopng4") -AC_ARG_WITH(svg2png-use-ksvgtopng, [ --with-svg2png-use-ksvgtopng use kde3's convert for png creation], SVG2PNG_CONVERTER="ksvgtopng") -if test "x${enable_svg2png}" = "xyes" ; then - if test "x${SVG2PNG_CONVERTER}" = "x"; then - SVG2PNG_CONVERTER="rsvg-convert ksvgtopng ksvgtopng4 inkscape convert" - fi - AC_PATH_PROGS([SVG2PNG], ${SVG2PNG_CONVERTER}, [none]) - if test "x${SVG2PNG}" = "xnone"; then - enable_svg2png="no" - fi -fi -AC_SUBST(SVG2PNG) -AC_SUBST(SVG2PNG_SCALES) -AC_SUBST(SVG2PNG_SCALES_FLAG) -AC_SUBST(SVG2PNG_SCALES_NAV) -AM_CONDITIONAL(USE_SVG2PNG_SCALES, test "x${SVG2PNG_SCALES}" != "xyes" -a "x${SVG2PNG_SCALES}" != "x") -AM_CONDITIONAL(USE_SVG2PNG_SCALES_FLAG, test "x${SVG2PNG_SCALES_FLAG}" != "xyes" -a "x${SVG2PNG_SCALES_FLAG}" != "x") -AM_CONDITIONAL(USE_SVG2PNG_SCALES_NAV, test "x${SVG2PNG_SCALES_NAV}" != "xyes" -a "x${SVG2PNG_SCALES_NAV}" != "x") -AM_CONDITIONAL(USE_SVG2PNG, test "x${enable_svg2png}" = "xyes") -AM_CONDITIONAL(USE_SVG, test "x${enable_svg}" = "xyes") - -# XSLTS -AC_ARG_WITH(xslts, [ --with-xslts enable processing of navit.xml with given xslt scripts], XSLTS=$withval, XSLTS="") -AC_SUBST(XSLTS) -AC_ARG_WITH(saxon, [ --with-saxon specify the saxon xslt processor], SAXON=$withval, SAXON="saxon") -AC_SUBST(SAXON) - -# Android Permissions -AC_ARG_WITH(android-permissions, [ --with-android-permissions Set additional android permissions], ANDROID_PERMISSIONS=$withval, ANDROID_PERMISSIONS="") -AC_SUBST(ANDROID_PERMISSIONS) -# Android Project -AC_ARG_WITH(android-project, [ --with-android-project Set android project], ANDROID_PROJECT=$withval, ANDROID_PROJECT="3") -AC_SUBST(ANDROID_PROJECT) - -# NLS - -AC_ARG_ENABLE(nls, - [ --disable-nls disable Native Language Support ( gettext/libintl )], - enable_nls=$enableval, enable_nls=yes) - - -INTLIBS="" -MOFILES="" -POFILES="" -POIFILES="" -LINGUAS="" - -xgettext_glade=no -if test "x$enable_nls" = "xyes"; then - - AC_CHECK_FUNC(gettext, [HAVEGETTEXT="yes"],[INTLIBS="-lintl" HAVEGETTEXT="yes"]) - AC_CHECK_PROG(XGETTEXT, xgettext, xgettext) - AC_CHECK_PROG(MSGMERGE, msgmerge, msgmerge) - AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt) - - if test "$XGETTEXT" != ""; then - if $XGETTEXT --help 2>&1 | grep illegal >/dev/null ; then - echo "xgettext isn't GNU version" - XGETTEXT="" - else - if echo '<test/>' | $XGETTEXT -L Glade - ; then - xgettext_glade=yes - fi - fi - fi - - if test "$XGETTEXT" != "" ; then - PO="" - if test "$LINGUAS" = ""; then - ling=` (cd $srcdir/po; /bin/ls *.po.in) ` - for l in $ling; do - lcode=`basename $l .po.in` - LINGUAS="$LINGUAS$lcode " - done - fi - AC_DEFINE(USE_NATIVE_LANGUAGE_SUPPORT, [1], [NLS Please]) - echo "xgettext and gettext() exist; will build i18n support for $LINGUAS" - else - LINGUAS="" - PO="" - echo "xgettext doesn't exist; will not build i18n support" - enable_nls=no - fi - for lang in $LINGUAS; do - MOFILES="$MOFILES $lang.mo" - done - for lang in $LINGUAS; do - POFILES="$POFILES $lang.po" - done - for lang in $LINGUAS; do - POIFILES="$POIFILES $lang.po.in" - done - -AC_SUBST(INTLIBS) -AC_SUBST(MOFILES) -AC_SUBST(POFILES) -AC_SUBST(POIFILES) -AM_GNU_GETTEXT_VERSION -AM_GNU_GETTEXT(no-libtool, need-ngettext, \$(top_builddir)/intl/) -if test "x${shared_libnavit}" = "xyes" -a "x${win32ce}" = "xyes"; then - INTLLIBS="\$(top_builddir)/intl/libintl.la" - LIBINTL=$INTLLIBS - LTLIBINTL=$INTLLIBS -fi -AC_SUBST(LIBINTL) -AC_SUBST(LTLIBINTL) -if test x"$LIBINTL" != "x" ;then - CFLAGS="$CFLAGS -I\$(top_builddir)/intl/" -fi - -fi -AM_CONDITIONAL(USE_NATIVE_LANGUAGE_SUPPORT, [test "x$enable_nls" = "xyes"]) -AM_CONDITIONAL(XGETTEXT_GLADE, [test "x$xgettext_glade" = "xyes"]) -AC_CHECK_HEADER( - byteswap.h, - AC_DEFINE( - [HAVE_BYTESWAP_H], - [1], - [Define to 1 if you have byteswap.h], - ) - , -) - -AC_CHECK_HEADER(sys/endian.h,AC_DEFINE([USE_SYS_ENDIAN_H], [1], [Define to 1 if you have sys/endian.h],),) - -PACKAGE=navit -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION") -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) - -AC_CHECK_HEADER(wordexp.h,wordexp_h=yes,wordexp_h=no;NAVIT_CFLAGS="$NAVIT_CFLAGS -I\$(top_srcdir)/navit/support/wordexp";WORDEXP_LIBS="-L\$(top_builddir)/navit/support/wordexp -lsupport_wordexp") -AM_CONDITIONAL(SUPPORT_WORDEXP, [test "x$wordexp_h" = "xno"]) - -support_libc=no -AC_ARG_ENABLE(support_libc, [ --enable-support-libc enable builtin mini libc ], support_libc=$enableval) -AM_CONDITIONAL(SUPPORT_LIBC, [test "x$support_libc" = "xyes"]) -if test "x$support_libc" = "xyes"; then - CFLAGS="$CFLAGS -I\$(top_srcdir)/navit/support/libc" - LIBC_LIBS="-L\$(top_builddir)/navit/support/libc -lsupport_libc" -fi - -## graphics -AC_ARG_ENABLE(graphics, [ --disable-graphics disable graphics], graphics=$enableval;graphics_reason="configure parameter") -AM_CONDITIONAL(GRAPHICS, test "x${graphics}" = "xyes") -if test "x$graphics" = "xyes"; then - AC_DEFINE([USE_GRAPHICS],[1],Define to 1 if you want to use graphics.) -fi - -# gd - -# android -AC_ARG_ENABLE(graphics-android, [ --disable-graphics-android disable graphics type android], graphics_android=$enableval;graphics_android_reason="configure parameter") -AM_CONDITIONAL(GRAPHICS_ANDROID, test "x${graphics_android}" = "xyes") -# gd -AC_ARG_ENABLE(graphics-gd, [ --enable-graphics-gd enable graphics type gd], graphics_gd=$enableval;graphics_gd_reason="configure parameter") -if test "x${graphics_gd}" = "xyes" ; then - if test -z "$GDLIB_CONFIG"; then - AC_PATH_PROG([GDLIB_CONFIG], [gdlib-config], []) - fi - AC_MSG_CHECKING([for gdlib with $GDLIB_CONFIG]) - if test ! -x "$GDLIB_CONFIG"; then - if test "x${GDLIB_CONFIG}" = "x" ; then - graphics_gd_reason="$GDLIB_CONFIG not executable" - else - graphics_gd_reason="gdlib-config missing" - fi - graphics_gd=no - AC_MSG_RESULT([no]) - else - if test "x${GD_CFLAGS}" = "x" ; then - GD_CFLAGS="-I`$GDLIB_CONFIG --includedir`" - fi - if test "x${GD_LIBS}" = "x" ; then - GD_LIBS="-L`$GDLIB_CONFIG --libdir` -lgd `$GDLIB_CONFIG --libs`" - fi - AC_SUBST(GD_CFLAGS) - AC_SUBST(GD_LIBS) - AC_MSG_RESULT([yes]) - fi -fi -AM_CONDITIONAL(GRAPHICS_GD, test "x${graphics_gd}" = "xyes") -AC_CHECK_HEADER( - sys/shm.h, - AC_DEFINE( - [HAVE_SHMEM], - [], - Define to 1 if you have shared memory - ) -) -AC_CHECK_HEADER( - X11/xpm.h, - AC_DEFINE( - [HAVE_XPM], - [], - Define to 1 if you have xpm header - ) -) -AC_CHECK_HEADER( - getopt.h, - AC_DEFINE( - [HAVE_GETOPT_H], - [], - Define to 1 if you have the getopt header - ) -) -if test "x${graphics_gd}" = "xyes" ; then - save_CPPFLAGS=$CPPFLAGS - save_LIBS=$LIBS - LIBS="$GD_LIBS $LIBS" - CPPFLAGS="$GD_CFLAGS $CPPFLAGS" - AC_TRY_LINK([#include <gd.h>], [gdImageCreateFromPng(0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_GRAPHICS_GD_PNG, 1, [Define to 1 if you have png support in gd.]),AC_MSG_RESULT(no)) - CPPFLAGS=$save_CPPFLAGS - LIBS=$save_LIBS -fi - -# gtk_drawing_area -AC_ARG_ENABLE(graphics-gtk-drawing-area, [ --disable-graphics-gtk-drawing-area disable graphics type gtk_drawing_area], graphics_gtk_drawing_area=$enableval;graphics_gtk_drawing_area_reason="configure parameter") -AM_CONDITIONAL(GRAPHICS_GTK_DRAWING_AREA, [test "x${graphics_gtk_drawing_area}" = "xyes"]) -# null -AC_ARG_ENABLE(graphics-null, [ --disable-graphics-null disable graphics type null], graphics_null=$enableval;graphics_null_reason="configure parameter") -AM_CONDITIONAL(GRAPHICS_NULL, test "x${graphics_null}" = "xyes") -# win32 -AC_ARG_ENABLE(graphics-win32, [ --disable-graphics-win32 disable graphics type win32], graphics_win32=$enableval;graphics_win32_reason="configure parameter") -AM_CONDITIONAL(GRAPHICS_WIN32, test "x${graphics_win32}" = "xyes") -# qt_qpainter -AC_ARG_ENABLE(graphics-qt-qpainter, [ --disable-graphics-qt-qpainter disable graphics type qt-qpainter], graphics_qt_qpainter=$enableval;graphics_qt_qpainter_reason="configure parameter") -if test "x${graphics_qt_qpainter}" = "xyes" -a "x${QT_GUI_CFLAGS}" = "x" -a "x${QT_GUI_LIBS}" = "x"; then - PKG_CHECK_MODULES(QT_GUI, [QtGui QtCore],graphics_qt_qpainter=yes,graphics_qt_qpainter=no;graphics_qt_qpainter_reason="Packages QtGui and/or QtCore missing") - if test "x${graphics_qt_qpainter}" = "xno"; then - PKG_CHECK_MODULES(QT_GUI, [qt-mt],graphics_qt_qpainter=yes;graphics_qt_qpainter_reason="Package qt-mt present",graphics_qt_qpainter=no) - fi -fi -if test "x${graphics_qt_qpainter}" = "xyes" ; then - PKG_CHECK_MODULES(QT_SVG, [QtSvg], have_qt_svg=yes, have_qt_svg=no) - if test "x${have_qt_svg}" = "xyes"; then - AC_DEFINE([HAVE_QT_SVG],[],Define to 1 if qt supports svg) - fi -fi -if test "x${graphics_qt_qpainter}" = "xyes" ; then - AC_DEFINE(USE_GRAPICS_QT_QPAINTER, 1, [Build with graphics qt_qpainter]) -fi -AC_SUBST(QT_GUI_CFLAGS) -AC_SUBST(QT_GUI_LIBS) -AC_SUBST(QT_SVG_CFLAGS) -AC_SUBST(QT_SVG_LIBS) -AM_CONDITIONAL(GRAPHICS_QT_QPAINTER, test "x${graphics_qt_qpainter}" = "xyes") -MOC=`$PKG_CONFIG QtGui --variable=moc_location` -if test "x${MOC}" = "x"; then - AC_CHECK_PROG(MOC, moc, moc) -fi -AC_SUBST(MOC) - - -## map -# binfile -AC_ARG_ENABLE(map-binfile, [ --disable-map-binfile disable map binfile], map_binfile=$enableval;map_binfile_reason="configure parameter") -AM_CONDITIONAL(MAP_BINFILE, test "x${map_binfile}" = "xyes") -# filter -AC_ARG_ENABLE(map-filter, [ --disable-map-filter disable map filter], map_filter=$enableval;map_filter_reason="configure parameter") -AM_CONDITIONAL(MAP_FILTER, test "x${map_filter}" = "xyes") -# mg -AC_ARG_ENABLE(map-mg, [ --disable-map-mg disable map mg], map_mg=$enableval;map_mg_reason="configure parameter") -AM_CONDITIONAL(MAP_MG, test "x${map_mg}" = "xyes") -# shapefile -AC_ARG_ENABLE(map-shapefile, [ --disable-map-shapefile disable map shapefile], map_shapefile=$enableval;map_shapefile_reason="configure parameter") -AM_CONDITIONAL(MAP_SHAPEFILE, test "x${map_shapefile}" = "xyes") -# textfile -AC_ARG_ENABLE(map-textfile, [ --disable-map-textfile disable map textfile], map_textfile=$enableval;map_textfile_reason="configure parameter") -AM_CONDITIONAL(MAP_TEXTFILE, test "x${map_textfile}" = "xyes") -# csv -AC_ARG_ENABLE(map-csv, [ --disable-map-csv disable map csv], map_csv=$enableval;map_csv_reason="configure parameter") -AM_CONDITIONAL(MAP_CSV, test "x${map_csv}" = "xyes") - -## osd -# core -AC_ARG_ENABLE(osd-core, [ --disable-osd-core disable osd core], osd_core=$enableval;osd_core_reason="configure parameter") -AM_CONDITIONAL(OSD_CORE, test "x${osd_core}" = "xyes") - -## gui -# gtk -AC_ARG_ENABLE(gui-gtk, [ --disable-gui-gtk disable gui type gtk ], gui_gtk=$enableval) -AM_CONDITIONAL(GUI_GTK, [test "x${gui_gtk}" = "xyes"]) -# internal -AC_ARG_ENABLE(gui-internal, [ --disable-gui-internal disable gui type internal], gui_internal=$enableval;gui_internal_reason="configure parameter") -AM_CONDITIONAL(GUI_INTERNAL, test "x${gui_internal}" = "xyes") -# win32 -AC_ARG_ENABLE(gui-win32, [ --disable-gui-win32 disable gui type win32], gui_win32=$enableval;gui_win32_reason="configure parameter") -AM_CONDITIONAL(GUI_WIN32, test "x${gui_win32}" = "xyes") -# qml -AC_ARG_ENABLE(gui-qml, [ --disable-gui-qml disable gui type QML], gui_qml=$enableval;gui_qml_reason="configure parameter") -if test "x${gui_qml}" = "xyes" -a "x${QT_GUI_CFLAGS}" = "x" -a "x${QT_GUI_LIBS}" = "x"; then - PKG_CHECK_MODULES(QT_GUI, [QtGui QtCore], ,gui_qml=no;gui_qml_reason="Packages QtGui and/or QtCore are missing") -fi -if test "x${gui_qml}" = "xyes" -a "x${QT_XML_CFLAGS}" = "x" -a "x${QT_XML_LIBS}" = "x"; then - PKG_CHECK_MODULES(QT_XML, [QtXml], ,gui_qml=no;gui_qml_reason="Package QtXml is missing") -fi -if test "x${gui_qml}" = "xyes" -a "x${QT_DECLARATIVE_CFLAGS}" = "x" -a "x${QT_DECLARATIVE_LIBS}" = "x"; then - PKG_CHECK_MODULES(QT_DECLARATIVE, [QtDeclarative >= 4.6.0 ], ,gui_qml=no;gui_qml_reason="Packages QtDeclarative is missing") -fi -if test "x${gui_qml}" = "xyes" ; then - AC_DEFINE(USE_GUI_QML, 1, [Build with gui qml]) -fi -AC_SUBST(QT_GUI_CFLAGS) -AC_SUBST(QT_GUI_LIBS) -AC_SUBST(QT_DECLARATIVE_CFLAGS) -AC_SUBST(QT_DECLARATIVE_LIBS) -AC_SUBST(QT_XML_CFLAGS) -AC_SUBST(QT_XML_LIBS) -AM_CONDITIONAL(GUI_QML, test "x${gui_qml}" = "xyes") - -## plugins -# pedestrian -AC_ARG_ENABLE(plugin-pedestrian, [ --enable-plugin-pedestrian enable pedestrian plugin], plugin_pedestrian=$enableval;plugin_pedestrian_reason="configure parameter") -AM_CONDITIONAL(PLUGIN_PEDESTRIAN, test "x${plugin_pedestrian}" = "xyes") - -## routing -AC_ARG_ENABLE(routing, [ --disable-routing disable routing], routing=$enableval;routing_reason="configure parameter") -AM_CONDITIONAL(ROUTING, test "x${routing}" = "xyes") -if test "x$routing" = "xyes"; then - AC_DEFINE([USE_ROUTING],[1],Define to 1 if you want to have routing.) -fi - -## speech -# android -AC_ARG_ENABLE(speech-android, [ --disable-speech-android disable speech type android], speech_android=$enableval;speech_android_reason="configure parameter") -AM_CONDITIONAL(SPEECH_ANDROID, test "x${speech_android}" = "xyes") -# cmdline -AC_ARG_ENABLE(speech-cmdline, [ --disable-speech-cmdline disable speech type cmdline], speech_cmdline=$enableval;speech_cmdline_reason="configure parameter") -AM_CONDITIONAL(SPEECH_CMDLINE, test "x${speech_cmdline}" = "xyes") -# espeak -AC_ARG_ENABLE(speech-espeak, [ --disable-speech-espeak disable speech type espeak], speech_espeak=$enableval;speech_espeak_reason="configure parameter") -AM_CONDITIONAL(SPEECH_ESPEAK, test "x${speech_espeak}" = "xyes") -# speech-dispatcher -AC_ARG_ENABLE(speech-speech-dispatcher, [ --disable-speech-speech-dispatcher disable speech type speech-dispatcher], speech_speech_dispatcher=$enableval;speech_speech_dispatcher_reason="configure parameter") -if test "x$speech_speech_dispatcher" = "xyes"; then - AC_CHECK_HEADER(libspeechd.h, AC_DEFINE([HAVE_LIBSPEECHD],[],Define to 1 if you have the <libspeechd.h> header file.) SPEECHD_LIBS="-lspeechd", speech_speech_dispatcher=no; speech_speech_dispatcher_reason="libspeechd.h missing") -fi -AC_SUBST(SPEECHD_CFLAGS) -AC_SUBST(SPEECHD_LIBS) -AM_CONDITIONAL(SPEECH_SPEECH_DISPATCHER, test "x${speech_speech_dispatcher}" = "xyes") -AM_CONDITIONAL(SUPPORT_ESPEAK, test "x${support_espeak}" = "xyes") - -## vehicle -# android -AC_ARG_ENABLE(vehicle-android, [ --disable-vehicle-android disable vehicle type android], vehicle_android=$enableval;vehicle_android_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_ANDROID, test "x${vehicle_android}" = "xyes") -# demo -AC_ARG_ENABLE(vehicle-demo, [ --disable-vehicle-demo disable vehicle type demo], vehicle_demo=$enableval;vehicle_demo_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_DEMO, test "x${vehicle_demo}" = "xyes") -# file -AC_ARG_ENABLE(vehicle-file, [ --disable-vehicle-file disable vehicle type file], vehicle_file=$enableval;vehicle_file_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_FILE, test "x${vehicle_file}" = "xyes") -# gpsd -# We accept even old, buggy versions of libgps, because N810 uses an old version (see #1179). -AC_ARG_ENABLE(vehicle-gpsd, [ --disable-vehicle-gpsd disable vehicle type gpsd], vehicle_gpsd=$enableval;vehicle_gpsd_reason="configure parameter") -if test "x${vehicle_gpsd}" = xyes -then - PKG_CHECK_MODULES([GPSD], [libgps], have_libgps="yes", have_libgps="no") - if test "x$have_libgps" = "xyes"; then - AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have libgps.) - PKG_CHECK_MODULES([LIBGPS19], [libgps >= 2.90], have_libgps19="yes", have_libgps19="no") - if test "x$have_libgps19" = "xyes"; then - AC_DEFINE([HAVE_LIBGPS19],[],Define to 1 if you have libgps19.) - fi - else - AC_CHECK_HEADER(gps.h, AC_DEFINE([HAVE_LIBGPS],[],Define to 1 if you have the <gps.h> header file.) GPSD_LIBS="-lgps", vehicle_gpsd=no; vehicle_gpsd_reason="no gps.h and no gpsd pkgconfig" ) - fi -fi -AC_SUBST(GPSD_CFLAGS) -AC_SUBST(GPSD_LIBS) -AM_CONDITIONAL(VEHICLE_GPSD, [test "x${vehicle_gpsd}" = "xyes"]) -# gypsy -AC_ARG_ENABLE(vehicle-gypsy,[ --disable-vehicle-gypsy disable vehicle type gypsy], vehicle_gypsy=$enableval;vehicle_gypsy_reason="configure parameter") -if test "x${vehicle_gypsy}" = "xyes" -then - PKG_CHECK_MODULES(GYPSY, gypsy, ,vehicle_gypsy=no;vehicle_gypsy_reason="package gypsy missing") -fi -AC_SUBST(GYPSY_CFLAGS) -AC_SUBST(GYPSY_LIBS) -AM_CONDITIONAL(VEHICLE_GYPSY, test "x${vehicle_gypsy}" = "xyes") -# maemo -AC_ARG_ENABLE(vehicle-maemo, [ --disable-vehicle-maemo disable vehicle type maemo], vehicle_maemo=$enableval;vehicle_maemo_reason="configure parameter") -if test "x${vehicle_maemo}" = "xyes" ; then - PKG_CHECK_MODULES(LIBLOCATION, liblocation, [ - AC_SUBST(LIBLOCATION_CFLAGS) - AC_SUBST(LIBLOCATION_LIBS) - ], [ - AC_MSG_RESULT(no) - vehicle_maemo=no - vehicle_maemo_reason="no maemo location library found" - ]) -fi -AM_CONDITIONAL(VEHICLE_MAEMO, test "x${vehicle_maemo}" = "xyes") -# null -AC_ARG_ENABLE(vehicle-null, [ --enable-vehicle-null enable vehicle type null], vehicle_null=$enableval;vehicle_null_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_NULL, test "x${vehicle_null}" = "xyes") -# wince -AC_ARG_ENABLE(vehicle-wince, [ --disable-vehicle-wince disable vehicle type wince], vehicle_wince=$enableval;vehicle_wince_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_WINCE, test "x${vehicle_wince}" = "xyes") -# iphone -AC_ARG_ENABLE(vehicle-iphone, [ --disable-vehicle-iphone disable vehicle type iphone], vehicle_iphone=$enableval;vehicle_iphone_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_IPHONE, test "x${vehicle_iphone}" = "xyes") -if test "x${vehicle_iphone}" = "xyes" -then - IPHONE_LIBS=-Wl,-framework,CoreLocation -fi -AC_SUBST(IPHONE_CFLAGS) -AC_SUBST(IPHONE_LIBS) -# webos -AC_ARG_ENABLE(vehicle-webos, [ --enable-vehicle-webos enable vehicle type webos], vehicle_webos=$enableval;vehicle_webos_reason="configure parameter") -AM_CONDITIONAL(VEHICLE_WEBOS, test "x${vehicle_webos}" = "xyes") -if test "x${vehicle_webos}" = "xyes" -then - AC_DEFINE(USE_WEBOS,[],Build with webOS support) - LIBPDL_CFLAGS="$SDL_CFLAGS -I/usr/local/include" - LIBPDL_LIBS="-L/usr/local/lib -lpdl" - AC_SUBST(LIBPDL_CFLAGS) - AC_SUBST(LIBPDL_LIBS) -fi -NAVIT_CFLAGS="$NAVIT_CFLAGS $GLIB_CFLAGS $GMODULE_CFLAGS" -NAVIT_LIBS="$NAVIT_LIBS $GLIB_LIBS $GMODULE_LIBS $LIBINTL" -AC_SUBST(NAVIT_CFLAGS) -AC_SUBST(NAVIT_LIBS) -AC_SUBST(WORDEXP_LIBS) -AC_SUBST(LIBC_LIBS) -AC_SUBST(WINDRES) - -AC_CONFIG_FILES([ -Makefile -navit/Makefile -navit/autoload/Makefile -navit/autoload/osso/Makefile -navit/binding/Makefile -navit/binding/python/Makefile -navit/binding/dbus/Makefile -navit/binding/win32/Makefile -navit/map/Makefile -navit/map/mg/Makefile -navit/map/textfile/Makefile -navit/map/csv/Makefile -navit/map/shapefile/Makefile -navit/map/filter/Makefile -navit/map/binfile/Makefile -navit/map/garmin/Makefile -navit/maptool/Makefile -navit/fib-1.1/Makefile -navit/font/Makefile -navit/font/freetype/Makefile -navit/fonts/Makefile -navit/graphics/Makefile -navit/graphics/android/Makefile -navit/graphics/gd/Makefile -navit/graphics/gtk_drawing_area/Makefile -navit/graphics/opengl/Makefile -navit/graphics/null/Makefile -navit/graphics/sdl/Makefile -navit/graphics/qt_qpainter/Makefile -navit/graphics/win32/Makefile -navit/gui/Makefile -navit/gui/gtk/Makefile -navit/gui/internal/Makefile -navit/gui/win32/Makefile -navit/gui/qml/Makefile -navit/gui/qml/skins/Makefile -navit/gui/qml/skins/navit/Makefile -navit/osd/Makefile -navit/osd/core/Makefile -navit/plugin/Makefile -navit/plugin/pedestrian/Makefile -navit/speech/Makefile -navit/speech/android/Makefile -navit/speech/cmdline/Makefile -navit/speech/dbus/Makefile -navit/speech/espeak/Makefile -navit/speech/speech_dispatcher/Makefile -navit/support/Makefile -navit/support/espeak/Makefile -navit/support/ezxml/Makefile -navit/support/glib/Makefile -navit/support/libc/Makefile -navit/support/libpng/Makefile -navit/support/shapefile/Makefile -navit/support/win32/Makefile -navit/support/wordexp/Makefile -navit/support/zlib/Makefile -navit/vehicle/Makefile -navit/vehicle/android/Makefile -navit/vehicle/file/Makefile -navit/vehicle/gpsd/Makefile -navit/vehicle/gpsd_dbus/Makefile -navit/vehicle/gypsy/Makefile -navit/vehicle/maemo/Makefile -navit/vehicle/null/Makefile -navit/vehicle/demo/Makefile -navit/vehicle/wince/Makefile -navit/vehicle/iphone/Makefile -navit/vehicle/webos/Makefile -navit/xpm/Makefile -navit/maps/Makefile -intl/Makefile -po/Makefile -man/Makefile -]) -#src/data/garmin_img/Makefile - -AC_OUTPUT - - -echo "" -echo "" -echo "Summary of your installation :" -# FIXME : maybe elaborate missing dependencies -if test x"$graphics_sdl" != xyes - then - sdl_failures="(libsdl maybe?) " -fi -if test x"$glut" != xyes - then - sdl_failures=$sdl_failures"glut " -fi -if test -z "$sdl_failures" - then - echo "OpenGL gui : ENABLED, with $CEGUI_LIBS" - else - echo "OpenGL gui : DISABLED : you are missing $sdl_failures" -fi -if test x"$enable_hildon" = xyes - then - echo "Maemo/Hildon: ENABLED" - else - echo "Maemo/Hildon: DISABLED" -fi -if test x"$enable_osso" = xyes - then - echo "Maemo/OSSO: ENABLED" - else - echo "Maemo/OSSO: DISABLED" -fi -if test x"${USE_GARMIN}" = xyes - then - if test "x$use_libgarmin" = "xyes" - then - echo "Garmin IMG : ENABLED" - else - echo "Garmin IMG : DISABLED (you don't have libgarmin)" - fi - else - echo "Garmin IMG : DISABLED (you requested it)" -fi - -if test x"$LIBINTL" = "x" ;then - nls_libs="system gettext support" -else - nls_libs="$LIBINTL" -fi -echo "Plugins: $plugins ($plugins_reason)" -echo "Postgresql: $postgresql ($postgresql_reason)" -echo "Samplemap: $samplemap ($samplemap_reason)" -echo "NLS Support: $enable_nls ($nls_libs)" -echo "Routing: $routing ($routing_reason)" -echo "Font renderers:" -echo " freetype: $font_freetype ($font_freetype_reason)" -echo " FriBidi enabled: $fribidi ($fribidi_reason)" - -echo "Graphics types: $graphics ($graphics_reason)" -echo " android: $graphics_android ($graphics_android_reason)" -echo " gtk_drawing_area: $graphics_gtk_drawing_area ($graphics_gtk_drawing_area_reason)" -echo " null: $graphics_null ($graphics_null_reason)" -echo " qt_qpainter: $graphics_qt_qpainter ($graphics_qt_qpainter_reason)" -echo " win32: $graphics_win32 ($graphics_win32_reason)" -echo " OpenGL: $graphics_opengl ($graphics_opengl_reason)" -echo " gd: $graphics_gd ($graphics_gd_reason)" -echo " sdl: $graphics_sdl ($graphics_sdl_reason)" - -echo "GUI types:" -echo " gtk: $gui_gtk ($gui_gtk_reason)" -echo " internal: $gui_internal ($gui_internal_reason)" -echo " win32: $gui_win32 ($gui_win32_reason)" -echo " qml: $gui_qml ($gui_qml_reason)" - -echo "Map types:" -echo " binfile: $map_binfile ($map_binfile_reason)" -echo " filter: $map_filter ($map_filter_reason)" -echo " mg: $map_mg ($map_mg_reason)" -echo " shapefile: $map_shapefile ($map_shapefile_reason)" -echo " textfile: $map_textfile ($map_textfile_reason)" -echo " csv: $map_csv ($map_csv_reason)" - - -echo "Bindings:" -echo " dbus: $binding_dbus ($binding_dbus_reason)" -echo " python: $binding_python ($binding_python_reason)" - -echo "OSD types:" -echo " core: $osd_core ($osd_core_reason)" - -echo "Plugins:" -echo " pedestrian: $plugin_pedestrian ($plugin_pedestrian_reason)" - -echo "Speech types:" -echo " android: $speech_android ($speech_android_reason)" -echo " cmdline: $speech_cmdline ($speech_cmdline_reason)" -echo " dbus: $speech_dbus ($speech_dbus_reason)" -echo " espeak: $speech_espeak ($speech_espeak_reason)" -echo " speech_dispatcher: $speech_speech_dispatcher ($speech_speech_dispatcher_reason)" - -echo "Vehicle types:" -echo " android: $vehicle_android ($vehicle_android_reason)" -echo " demo: $vehicle_demo ($vehicle_demo_reason)" -echo " file: $vehicle_file ($vehicle_file_reason)" -echo " gpsd: $vehicle_gpsd ($vehicle_gpsd_reason)" -echo " gpsd_dbus: $vehicle_gpsd_dbus ($vehicle_gpsd_dbus_reason)" -echo " gypsy: $vehicle_gypsy ($vehicle_gypsy_reason)" -echo " maemo: $vehicle_maemo ($vehicle_maemo_reason)" -echo " null: $vehicle_null ($vehicle_null_reason)" -echo " wince: $vehicle_wince ($vehicle_wince_reason)" -echo " iphone: $vehicle_iphone ($vehicle_iphone_reason)" -echo " webos: $vehicle_webos ($vehicle_webos_reason)" - -if test "x${gtk2_pkgconfig}" != "xyes" -a "x${gui_win32}" != "xyes" -a "x${gui_internal}" != "xyes" -a "x${gui_qml}" != "xyes" -then - echo "" - echo "" - echo "*** WARNING! you have no gui that can be built! ***" - echo "Please install the dependency for at least gtk or sdl gui" - echo "For more details, see the wiki at http://wiki.navit-project.org/" - echo "" -fi - -echo "Support for autotools will be removed soon from navit, please use cmake instead" -sleep 5 diff --git a/contrib/sailfish/build_on_sailfish_sdk.sh b/contrib/sailfish/build_on_sailfish_sdk.sh new file mode 100755 index 000000000..663d31b48 --- /dev/null +++ b/contrib/sailfish/build_on_sailfish_sdk.sh @@ -0,0 +1,7 @@ +#! /bin/sh +#run on the Sailfish OS sdk virtual machine. Check that rpmbuild directory exists. +#arm devices +sb2 -t SailfishOS-armv7hl -m sdk-build rpmbuild --define "_topdir /home/src1/rpmbuild" --define "navit_source `pwd`/../.." -bb navit-sailfish.spec +#intel devices +sb2 -t SailfishOS-i486 -m sdk-build rpmbuild --define "_topdir /home/src1/rpmbuild" --define "navit_source `pwd`/../.." -bb navit-sailfish.spec + diff --git a/contrib/sailfish/navit-sailfish.spec b/contrib/sailfish/navit-sailfish.spec new file mode 100755 index 000000000..c25af5fe5 --- /dev/null +++ b/contrib/sailfish/navit-sailfish.spec @@ -0,0 +1,117 @@ +# $Id$ +# Authority: dries +#%global navit_version_minor %(grep NAVIT_VERSION_MINOR ../../CMakeLists.txt |head -1| sed -e s/[^0-9]//g) +#%global navit_version_major %(grep NAVIT_VERSION_MAJOR ../../CMakeLists.txt |head -1| sed -e s/[^0-9]//g) +#%global navit_version_patch %(grep NAVIT_VERSION_PATCH ../../CMakeLists.txt |head -1| sed -e s/[^0-9]//g) +#%global navit_version %{navit_version_major}.%{navit_version_minor}.%{navit_version_patch} +#%global git_version %(git describe --tags | sed y/-/_/) + +Name: harbour-navit +Summary: Open Source car navigation system +#Version: %{navit_version}_%{git_version} +Version: 0.5.1 +Release: 1 +License: GPL +Group: Applications/Productivity +URL: http://navit-projet.org/ + +BuildRequires: gcc +BuildRequires: cmake +BuildRequires: glib2-devel +BuildRequires: gettext-devel +BuildRequires: freetype-devel +BuildRequires: zlib-devel +BuildRequires: qt5-qtcore-devel +BuildRequires: qt5-qtdeclarative-devel +BuildRequires: qt5-qtdbus-devel +BuildRequires: qt5-qtpositioning-devel +BuildRequires: qt5-qtxml-devel +BuildRequires: qt5-qtsvg-devel + +#Requires: glib2 +#Requires: gettext-libs +Requires: freetype +#Requires: zlib +#Requires: qt5-qtcore +#Requires: qt5-qtdeclarative +#Requires: qt5-qtdbus +Requires: qt5-qtpositioning +#Requires: qt5-qtxml +Requires: qt5-qtsvg + +%global navit_real_source %{navit_source} + +%description +Navit is a car navigation system with routing engine. + +It's modular design is capable of using vector maps of various formats for routing and rendering of the displayed map. It's even possible to use multiple maps at a time. + +The GTK+ or SDL user interfaces are designed to work well with touch screen displays. Points of Interest of various formats are displayed on the map. + +The current vehicle position is either read from gpsd or directly from NMEA GPS sensors. + +The routing engine not only calculates an optimal route to your destination, but also generates directions and even speaks to you using speechd. + +%prep +#just create empty directory here for build files. We'll use git sources directly. +rm -rf navit-build +mkdir navit-build +#nothing to delete and nothing to extract. Just setup for our empty directory created before. +%setup -D -T -n navit-build + +%build +%define debug_package %{nil} +%{__rm} -rf %{buildroot} +#cmake git files directly +cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \ + -DPACKAGE:STRING=harbour-navit \ + -DNAVIT_BINARY:STRING=harbour-navit \ + -DSHARE_DIR:PATH=share/harbour-navit \ + -DLOCALE_DIR:PATH=share/harbour-navit/locale \ + -DIMAGE_DIR:PATH=share/harbour-navit/xpm \ + -DLIB_DIR:PATH=share/harbour-navit/lib \ + -DBUILD_MAPTOOL:BOOL=FALSE \ + -Dbinding/dbus:BOOL=FALSE \ + -Dgraphics/gtk_drawing_area:BOOL=FALSE \ + -Dgraphics/null:BOOL=FALSE \ + -Dgraphics/opengl:BOOL=FALSE \ + -Dgraphics/sdl:BOOL=FALSE \ + -Dspeech/dbus:BOOL=FALSE \ + -Dvehicle/gpsd:BOOL=FALSE \ + -Dvehicle/gpsd_dbus:BOOL=FALSE \ + -DUSE_PLUGINS=n \ + -DUSE_QWIDGET:BOOL=FALSE \ + %{navit_real_source} +%{__make} + +# -DMAN_DIR:PATH=share/harbour-navit/man1 + +%install +%make_install +#copy in sailfish config +cp %{navit_real_source}/contrib/sailfish/navit.xml %{buildroot}/usr/share/harbour-navit/navit.xml +#copy in espeak script +cp %{navit_real_source}/contrib/sailfish/say_de_DE.sh %{buildroot}/usr/bin/say_de_DE.sh + +%files +%defattr(644, root, root, 755) +%{_datadir}/harbour-navit/navit.xml +%{_datadir}/harbour-navit/xpm/ +%{_datadir}/harbour-navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin +%{_datadir}/applications/harbour-navit.desktop +%{_datadir}/icons/hicolor/256x256/apps/harbour-navit.png +%{_datadir}/icons/hicolor/128x128/apps/harbour-navit.png +%{_datadir}/icons/hicolor/108x108/apps/harbour-navit.png +%{_datadir}/icons/hicolor/86x86/apps/harbour-navit.png +%{_datadir}/icons/hicolor/22x22/apps/harbour-navit.png +%{_datadir}/harbour-navit/locale/ +%attr(755, root, root) %{_bindir}/harbour-navit +%attr(755, root, root) %{_bindir}/say_de_DE.sh +%doc %{_mandir}/man1/harbour-navit.1.gz +%doc %{_mandir}/man1/maptool.1.gz + + +%changelog +*Mon Dec 14 2015 Initial sailfish release +*Mon Apr 10 2017 Almost harbour valid +- Initial package. diff --git a/contrib/sailfish/navit.xml b/contrib/sailfish/navit.xml new file mode 100755 index 000000000..831043d4d --- /dev/null +++ b/contrib/sailfish/navit.xml @@ -0,0 +1,6928 @@ +<?xml version="1.0" encoding="UTF-8"?><!-- + For configuration options used in this file, please read + http://wiki.navit-project.org/index.php/Configuration + Do not edit /usr/share/navit/navit.xml or /etc/navit/navit.xml : + changes would be lost on upgrade. Rather copy it to ~/.navit/. +--> +<!DOCTYPE config + SYSTEM "navit.dtd"> +<config xmlns:xi="http://www.w3.org/2001/XInclude"> + <plugins> + <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}lib*.so" ondemand="yes"/> + <plugin path="$NAVIT_LIBDIR/autoload/${NAVIT_LIBPREFIX}lib*.so"/> + <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libbinding_dbus.so" active="no"/> + <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libgraphics_null.so" active="no"/> + </plugins> + + <!-- The global debug level (like using command line option "-d"). Ignored if option -d is used. --> + <!-- Possible debug levels: error, warning, info, debug. --> + <debug name="global" dbg_level="error"/> + <!-- Example of setting the debug level for a single function. --> + <debug name="navit:do_draw" dbg_level="error"/> + <!-- This is here so one can copy&paste the contents of popup menus --> + <debug name="navit:popup_printf_cb" dbg_level="debug"/> + <!-- Example for logging timing/profiling information. Note the prefix "profile:". + <debug name="profile:navit:do_draw" dbg_level="debug"/> + --> + <!-- segv: 1 - show backtrace with gdb and exit, 2 - stay in gdb --> + <debug name="segv" level="1"/> + <!-- timestamps 0/1 - prefix log messages with a timestamp --> + <debug name="timestamps" level="0"/> + <debug name="graphics_qt5" dbg_level="error"/> + <debug name="vehicle_qt5" dbg_level="error"/> + + <!-- center= defines which map location Navit will show after first start. + It will only be used for the first start; subsequent starts will remember the + last position (in center.txt). + Center coordinates format: "Long Lat" in decimal degrees (WGS 84). + For other formats see http://wiki.navit-project.org/index.php/Coordinate_format. + --> + <navit center="11.5666 48.1333" zoom="256" tracking="1" orientation="-1" recent_dest="250" drag_bitmap="0"> + <!-- Use one of gtk_drawing_area, qt_qpainter or sdl. + On windows systems, use win32 --> + <graphics type="qt5" qt5_platform="wayland"/> + <!-- The following line let you select which graphical user interface you'd like to use. + Options include internal (optimized for touch screen devices), gtk (useful for desktop computers). + If you don't like the internal gui, set enabled=yes for the following tag and enabled=no for the gui internal tag --> + <gui type="gtk" enabled="no" menubar="1" toolbar="1" statusbar="1"/> + <!-- + In case of the internal GUI, you can even influence the size of the text and of the icons in the toolbar and the viewport. + Here's an example for a freerunner: --> + <!-- <gui type="internal" font_size="350" icon_xs="32" icon_s="96" icon_l="96"/> --> + <!-- The action that appears on map click is configurable with the attribute "on_map_click". + To get the prvious behaviour of showing the map point menu use on_map_click='menu("#Map Point")' + --> + <gui type="internal" font_size="350" icon_xs="32" icon_s="96" icon_l="96" enabled="yes"><![CDATA[ + <html> + <a name='Main Menu'><text>Main menu</text> + <a href='#Actions'><img src='gui_actions'>Actions</img></a> + <img cond='flags&2' src='gui_map' onclick='back_to_map()'><text>Show +Map</text></img> + <a href='#Settings'><img src='gui_settings'><text>Settings</text></img></a> + <a href='#Tools'><img src='gui_tools'><text>Tools</text></img></a> + <a href='#Route'><img src='gui_settings'><text>Route</text></img></a> + <img src='gui_about' onclick='about()'><text>About</text></img> + <img src='gui_quit' onclick='quit()'><text>Quit</text></img> + </a> + <a name='Actions'><text>Actions</text> + <img src='gui_bookmark' onclick='bookmarks()'><text>Bookmarks</text></img> + <img src='gui_formerdests' onclick='formerdests()'><text>Former +Destinations</text></img> + <img cond='click_coord_geo' src='gui_map' onclick='position(click_coord_geo,_("Map Point"),8|16|32|64|256)'><script>write(click_coord_geo)</script></img> + <img cond='position_coord_geo' src='gui_vehicle' onclick='position(position_coord_geo,_("Vehicle Position"),8|32|64|128|256)'><script>write(position_coord_geo)</script></img> + <img src='gui_town' onclick='town()'><text>Town</text></img> + <img src='gui_map' onclick='enter_coord()'><text>Coordinates</text></img> + <img cond='navit.route.route_status&1' src='gui_stop' onclick='abort_navigation();refresh()'><text>Stop +Navigation</text></img> + </a> + <a name='Settings'><text>Settings</text> + <a href='#Settings Display'><img src='gui_display'><text>Display</text></img></a> + <img src='gui_maps' onclick='setting_maps()'><text>Maps</text></img> + <!-- <a href='#Settings Maps'><img src='gui_maps'><text>Maps</text></img></a> --> + <img src='gui_vehicle' onclick='setting_vehicle()'><text>Vehicle</text></img> + <!-- <a href='#Settings Vehicles'><img src='gui_vehicle'><text>Vehicle</text></img></a> --> + <img src='gui_rules' onclick='setting_rules()'><text>Rules</text></img> + </a> + <a name='Settings Display'><text>Display</text> + <!-- <img src='gui_display' onclick='setting_layout()'><text>Layout</text></img> --> + <a href='#Settings Layouts'><img src='gui_display'><text>Layout</text></img></a> + <img cond='fullscreen==0' src='gui_fullscreen' onclick='fullscreen=1'><text>Fullscreen</text></img> + <img cond='fullscreen==1' src='gui_leave_fullscreen' onclick='fullscreen=0'><text>Window Mode</text></img> + <img cond='navit.pitch==0' src='gui_map' onclick='navit.pitch=pitch;redraw_map();back_to_map()'><text>3D</text></img> + <img cond='navit.pitch!=0' src='gui_map' onclick='navit.pitch=0;redraw_map();back_to_map()'><text>2D</text></img> + </a> + <a name='Tools'><text>Tools</text> + <img src='gui_actions' onclick='locale()'><text>Show Locale</text></img> + </a> + <a name='Route'><text>Route</text> + <img src='gui_actions' onclick='route_description()'><text>Description</text></img> + <img src='gui_actions' onclick='route_height_profile()'><text>Height Profile</text></img> + <img cond='navit.waypoints_flag && (navit.route.route_status&1)' src='cursor_still' onclick='waypoints()'><text>Waypoints</text></img> + <img cond='navit.waypoints_flag && (navit.route.route_status&1)' src='gui_stop' onclick='navit.route_remove_last_waypoint()'><text>Drop last +Waypoint</text></img> + <img cond='navit.waypoints_flag && (navit.route.route_status&1)' src='gui_stop' onclick='navit.route_remove_next_waypoint()'><text>Drop next +Waypoint</text></img> + </a> + <a name='Map Point'><text>Map Point</text> + <script>position(click_coord_geo,_("Map Point"),8|16|32|64|256)</script> + </a> + <a name='Settings Layouts' class='clist' refresh_cond='navit.layout'><text>Layout</text> + <script> + foreach(layout;navit.layout) + img("centry", navit.layout==layout?"gui_active":"gui_inactive", layout.name, + "", "navit.layout=navit.layout[@name==%{se}*]", layout.name); + </script> + </a> + <a name='Settings Maps' class='clist'><text>Maps</text> + <script> + foreach(map;navit.mapset.map) + if (map.description) + img("centry",map.active?"gui_active":"gui_inactive", map.description, + "","navit.mapset.map[@description==%{se}].active=%{d}*",map.description,!map.active,"redraw_map();refresh();"); + else + img("centry",map.active?"gui_active":"gui_inactive", map.type+":"+map.data, + "","navit.mapset.map[@data==%{se}].active=%{d}*",map.data,!map.active,"redraw_map();refresh();"); + </script> + </a> + <a name='Settings Vehicles' class='clist'><text>Vehicle</text> + <script> + foreach(vehicle;navit.vehicle) + img("centry",navit.vehicle==vehicle?"gui_active":"gui_inactive",vehicle.name, + "name=%{se};menu(\"#Settings Vehicle\")",vehicle.name); + </script> + </a> + <a name='Settings Vehicle' class='clist'><script>write(name)</script> + <script> + foreach(vehicle;navit.vehicle) + if (vehicle.name == name) { + if (vehicle!=navit.vehicle) + img("centry","gui_active","Set as active", + "","navit.vehicle=navit.vehicle[@name==%{se}*]",name); + foreach(vehicleprofile;navit.vehicleprofile) + 0 img("centry",vehicle.profilename==vehicleprofile.name?"gui_active":"gui_inactive",vehicleprofile.name, + "","navit.vehicle[@name=%{se}].profilename=%{se}*",name,vehicleprofile.name,"refresh()"); + } + </script> + </a> + <a name='Satellite Status' class='clist'><text>Satellite Status</text> + <script>satellite_status_page()</script> + </a> + <a name='NMEA Data' class='clist'><text>NMEA Data</text> + <script>nmea_data_page()</script> + </a> + </html> + ]]></gui> + <!-- for a debug log --> + <log enabled="no" type="textfile_debug" data="debug_%Y%m%d-%i.txt" flush_size="1000" flush_time="30"/> + <!-- osd items allow to position display and control items directly on top of the map: --> + <osd enabled="no" type="compass"/> + <osd enabled="no" type="navigation_next_turn"/> + + <!-- Commands include gui_internal_menu, gui_internal_fullscreen, zoom_in and zoom_out. + Usage of negative values change the button origins. x="0" y="0" specifies the top left, x="-0" y="-0" the bottom right corner. + It's always the top left corner of the icon, so you need to consider the icon's size when you enter the values. --> + <osd enabled="yes" type="gps_status" x="0" y="0" w="50" h="50"/> + <osd enabled="no" type="text" label="${vehicle.position_sats_used}/${vehicle.position_qual}" x="0" y="0" w="50" h="50" background_color="#00000058" font_size="400"/> + <osd enabled="yes" type="text" label="${vehicle.position_speed}" x="50" y="0" w="150" h="50" background_color="#00000058" font_size="400"/> + <osd enabled="yes" type="text" label="${navigation.item.destination_length[named]}" x="200" y="0" w="240" h="50" background_color="#00000058" font_size="400"/> + <osd enabled="yes" type="navigation_next_turn" x="-100" y="0" w="100" h="100" icon_w="90" icon_h="80" background_color="#00000058"/> + <osd enabled="yes" type="text" label="${navigation.item[1].length[named]}" x="-100" y="100" w="100" h="50" background_color="#00000058" font_size="400"/> + <osd enabled="yes" type="button" x="-96" y="-96" w="96" h="96" command="zoom_in()" src="zoom_in"/> + <osd enabled="yes" type="button" x="0" y="-96" w="96" h="96" command="zoom_out()" src="zoom_out"/> + + <!-- Vehicle with GPS enabled for gpsd on unix --> + <vehicle name="Local GPS" profilename="car" enabled="no" active="1" source="gpsd://localhost" gpsd_query="w+xj"> + <!-- Vehicle with GPS enabled for direct communication on windows. Remove the line above if you use this. --> + <!-- <vehicle name="Local GPS" profilename="car" follow="1" enabled="yes" active="1" + source="serial:COM4 baud=4800 parity=N data=8 stop=1" > --> + + <!-- Navit can write a tracklog in several formats (gpx, nmea or textfile): --> + <log enabled="no" type="gpx" attr_types="position_time_iso8601,position_direction,position_speed,profilename,position_radius" data="track_%Y%m%d-%%i.gpx" flush_size="1000" flush_time="30"/> + </vehicle> + + <!-- For SDL, you should add follow="1" to have the view centered on your position --> + <!-- <vehicle name="Meins" enabled="yes" source="gpsd://localhost" color="#0000ff" follow="1"/> --> + + <vehicle name="Demo" profilename="car" enabled="no" source="demo://"/> + <vehicle name="Qt5" profilename="car" enabled="yes" active="1" source="qt5://"/> + + <!-- For the cumulative displacement filter to be enabled, set cdf_histsize="x" here, with x being an integer somewhere around 4 --> + <tracking cdf_histsize="0"/> + + <vehicleprofile name="car" route_depth="4:25%,8:40000,18:10000" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0" static_speed="5" static_distance="25"> + <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane" speed="10" route_weight="10" /> + <roadprofile item_types="street_2_city,track_paved" speed="30" route_weight="30" /> + <roadprofile item_types="street_3_city" speed="40" route_weight="40" /> + <roadprofile item_types="street_4_city" speed="50" route_weight="50" /> + <roadprofile item_types="highway_city" speed="80" route_weight="80" /> + <roadprofile item_types="street_1_land" speed="60" route_weight="60" /> + <roadprofile item_types="street_2_land" speed="65" route_weight="65" /> + <roadprofile item_types="street_3_land" speed="70" route_weight="70" /> + <roadprofile item_types="street_4_land" speed="80" route_weight="80" /> + <roadprofile item_types="street_n_lanes" speed="120" route_weight="120" /> + <roadprofile item_types="highway_land" speed="120" route_weight="120" /> + <roadprofile item_types="ramp" speed="40" route_weight="40" /> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="10" route_weight="10"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + + <vehicleprofile name="car_shortest" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0" static_speed="5" static_distance="25"> + <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane" speed="10" route_weight="60" /> + <roadprofile item_types="street_2_city,track_paved" speed="30" route_weight="60" /> + <roadprofile item_types="street_3_city" speed="40" route_weight="60" /> + <roadprofile item_types="street_4_city" speed="50" route_weight="60" /> + <roadprofile item_types="highway_city" speed="80" route_weight="60" /> + <roadprofile item_types="street_1_land" speed="60" route_weight="60" /> + <roadprofile item_types="street_2_land" speed="65" route_weight="60" /> + <roadprofile item_types="street_3_land" speed="70" route_weight="60" /> + <roadprofile item_types="street_4_land" speed="80" route_weight="60" /> + <roadprofile item_types="street_n_lanes" speed="120" route_weight="60" /> + <roadprofile item_types="highway_land" speed="120" route_weight="60" /> + <roadprofile item_types="ramp" speed="40" route_weight="60" /> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="10" route_weight="60"/> + <roadprofile item_types="ferry" speed="40" route_weight="60"/> + </vehicleprofile> + + <vehicleprofile name="car_avoid_tolls" flags="0x4000000" flags_forward_mask="0x4000402" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0" static_speed="5" static_distance="25"> + <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane" speed="10" route_weight="10"/> + <roadprofile item_types="street_2_city,track_paved" speed="30" route_weight="30"/> + <roadprofile item_types="street_3_city" speed="40" route_weight="40"/> + <roadprofile item_types="street_4_city" speed="50" route_weight="50"/> + <roadprofile item_types="highway_city" speed="80" route_weight="80"/> + <roadprofile item_types="street_1_land" speed="60" route_weight="60"/> + <roadprofile item_types="street_2_land" speed="65" route_weight="65"/> + <roadprofile item_types="street_3_land" speed="70" route_weight="70"/> + <roadprofile item_types="street_4_land" speed="80" route_weight="80"/> + <roadprofile item_types="street_n_lanes" speed="120" route_weight="120"/> + <roadprofile item_types="highway_land" speed="120" route_weight="120"/> + <roadprofile item_types="ramp" speed="40" route_weight="40"/> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="10" route_weight="10"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + <vehicleprofile name="car_pedantic" route_depth="18:25%,18:40000" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001" maxspeed_handling="0" route_mode="0" static_speed="5" static_distance="25"> + <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane" speed="10" route_weight="10"/> + <roadprofile item_types="street_2_city,track_paved" speed="30" route_weight="30"/> + <roadprofile item_types="street_3_city" speed="40" route_weight="40"/> + <roadprofile item_types="street_4_city" speed="50" route_weight="50"/> + <roadprofile item_types="highway_city" speed="80" route_weight="80"/> + <roadprofile item_types="street_1_land" speed="60" route_weight="60"/> + <roadprofile item_types="street_2_land" speed="65" route_weight="65"/> + <roadprofile item_types="street_3_land" speed="70" route_weight="70"/> + <roadprofile item_types="street_4_land" speed="80" route_weight="80"/> + <roadprofile item_types="street_n_lanes" speed="120" route_weight="120"/> + <roadprofile item_types="highway_land" speed="120" route_weight="120"/> + <roadprofile item_types="ramp" speed="40" route_weight="40"/> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="10" route_weight="10"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + <vehicleprofile name="bike" route_depth="18:25%,18:40000" flags="0x40000000" flags_forward_mask="0x40000000" flags_reverse_mask="0x40000000" maxspeed_handling="1" route_mode="0" static_speed="5" static_distance="25"> + <roadprofile item_types="steps" speed="2" route_weight="5" /> + <roadprofile item_types="street_pedestrian,footway" speed="5" route_weight="10" /> + <roadprofile item_types="path,track_ground" speed="12" route_weight="12" /> + <roadprofile item_types="track_gravelled" speed="17" route_weight="15" /> + <!-- cycleways, paved tracks, serviceways etc. are the favourite ways --> + <roadprofile item_types="track_paved,cycleway,street_service,street_parking_lane" speed="22" route_weight="20" /> + <!-- residential, unclassified, living street etc. --> + <roadprofile item_types="street_0,street_1_city,living_street" speed="20" route_weight="15" /> + <!-- tertiary and minor roads are acceptable, but should be avoided in favour of tracks and cycleways --> + <roadprofile item_types="street_2_city,street_1_land,street_2_land" speed="22" route_weight="12" /> + <!-- secondary etc. are acceptable when necessary --> + <roadprofile item_types="street_3_city" speed="22" route_weight="10" /> + <!-- primary, trunk etc. should be avoided --> + <roadprofile item_types="street_4_city,ramp" speed="22" route_weight="7" /> + <!-- Those types do not appear in maptool.c and therefore are not used ATM --> + <roadprofile item_types="street_3_land,street_4_land" speed="20" route_weight="7" /> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="20" route_weight="10"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + + <vehicleprofile name="pedestrian" route_depth="18:25%,18:10000" flags="0x80000000" flags_forward_mask="0x80000000" flags_reverse_mask="0x80000000" maxspeed_handling="1" route_mode="0" static_speed="3" static_distance="10"> + <roadprofile item_types="footway,bridleway,path,steps" speed="5" route_weight="5"/> + <roadprofile item_types="hiking_mountain" speed="4" route_weight="4"/> + <roadprofile item_types="living_street,street_pedestrian" speed="5" route_weight="5"/> + <roadprofile item_types="track_gravelled,track_unpaved,track_grass,track_ground,hiking" speed="5" route_weight="5"/> + <roadprofile item_types="track_paved" speed="5" route_weight="5"/> + <roadprofile item_types="cycleway" speed="5" route_weight="5"/> + <roadprofile item_types="street_0,street_1_city,street_2_city" speed="5" route_weight="5"/> + <roadprofile item_types="street_3_city,street_4_city,street_service,street_parking_lane" speed="5" route_weight="5"/> + <roadprofile item_types="street_1_land,street_2_land" speed="5" route_weight="5"/> + <roadprofile item_types="street_3_land,street_4_land" speed="5" route_weight="5"/> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="5" route_weight="5"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + <vehicleprofile name="horse" route_depth="18:25%,18:40000" flags="0x20000000" flags_forward_mask="0x20000000" flags_reverse_mask="0x20000000" maxspeed_handling="1" route_mode="0" static_speed="3" static_distance="10"> + <roadprofile item_types="bridleway" speed="10" route_weight="10"/> + <roadprofile item_types="footway,path,steps" speed="5" route_weight="5"/> + <roadprofile item_types="living_street,street_pedestrian" speed="5" route_weight="4"/> + <roadprofile item_types="track_gravelled" speed="5" route_weight="5"/> + <roadprofile item_types="track_paved" speed="5" route_weight="5"/> + <roadprofile item_types="cycleway" speed="5" route_weight="5"/> + <roadprofile item_types="street_0,street_1_city,street_2_city" speed="5" route_weight="2"/> + <roadprofile item_types="street_3_city,street_4_city,street_service,street_parking_lane" speed="5" route_weight="4"/> + <roadprofile item_types="street_1_land,street_2_land" speed="5" route_weight="2"/> + <roadprofile item_types="street_3_land,street_4_land" speed="5" route_weight="4"/> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="5" route_weight="2"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + <!-- chr: + flags used for a truck: (first flag number is 0) + 8: SIZE_OR_WEIGHT_LIMIT + 21: TRANSPORT_TRUCK + speed setup: + 'speed' data of the vehicleprofile for a car is + reduced about 10 km/h. When the speed was at + 10 km/h, I reduced it to 5 km/h. + 'route_weight' data has been treated in the same way. + If you want to discourage the use of small roads, + just reduce this value. + size and weight setup: + This is an example, you have to use the data of your truck. + bobshaffer's standard truck: + (1 lb = 453.59237 g, 1 foot = .3048 m) + (data has to be in [cm] and [kg] according to 'vehicleprofile.h') + vehicle_width= 9 feet, 274 cm + vehicle_height= 13.5 feet, 411 cm + vehicle_length= 70 feet, 2134 cm + vehicle_weight= 80000 lbs, 36287 kg + vehicle_axle_weight= 34000 lbs, 15422 kg + --> + + <vehicleprofile name="Truck" flags="0x200000" flags_forward_mask="0x200002" flags_reverse_mask="0x200001" maxspeed_handling="1" route_mode="0" static_speed="5" + static_distance="25" + vehicle_width="274" vehicle_height="411" vehicle_length="2134" + vehicle_weight="36287" vehicle_axle_weight="15422"> + <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane" speed="10" route_weight="5" /> + <roadprofile item_types="street_2_city,track_paved" speed="20" route_weight="20"/> + <roadprofile item_types="street_3_city" speed="30" route_weight="30"/> + <roadprofile item_types="street_4_city" speed="40" route_weight="40"/> + <roadprofile item_types="highway_city" speed="70" route_weight="70"/> + <roadprofile item_types="street_1_land" speed="50" route_weight="50"/> + <roadprofile item_types="street_2_land" speed="55" route_weight="55"/> + <roadprofile item_types="street_3_land" speed="60" route_weight="60"/> + <roadprofile item_types="street_4_land" speed="70" route_weight="70"/> + <roadprofile item_types="street_n_lanes" speed="80" route_weight="80"/> + <roadprofile item_types="highway_land" speed="80" route_weight="80"/> + <roadprofile item_types="ramp" speed="30" route_weight="30"/> + <!--roundabout does not apply to OSMaps --> + <roadprofile item_types="roundabout" speed="5" route_weight="5"/> + <roadprofile item_types="ferry" speed="40" route_weight="40"/> + </vehicleprofile> + + + <route destination_distance="50"/> + + <navigation> + <announce type="street_0,street_1_city,street_parking_lane,living_street,street_service" level0="25" level1="100" level2="200" unit="m"/> + <announce type="street_2_city,street_3_city,street_4_city,ramp" level0="50" level1="200" level2="500" unit="m"/> + <announce type="highway_city,street_1_land,street_2_land,street_3_land,street_4_land" level0="100" level1="400" level2="1000" unit="m"/> + <announce type="street_n_lanes,highway_land" level0="300" level1="1000" level2="2000" unit="m"/> + </navigation> + + <!-- Navit provides speech output in text format. + If you have a speech synthesizer like festival lite installed, you can get turn by turn directions out of navit. Please set the "cps"-value to how many characters your tts engine approximately speaks per second. + The default is text output to the shell --> + <!-- speech type="cmdline" data="echo 'Fix the speech tag in navit.xml to let navit say:' '%s'" cps="15"/ --> + <speech type="cmdline" data="say_de_DE.sh '%s'" cps="15"/> + <!-- + Instead of using a speech synthesizer, navit can also play pre-recorded samples for each word. + See http://wiki.navit-project.org/index.php/Configuration for details. + + <speech type="cmdline" data="aplay -q %s" + sample_dir="/path/to/sampledir" sample_suffix=".wav" flags="1" + vocabulary_name="0" vocabulary_name_systematic="0" vocabulary_distances="0"/> + --> + + <!-- You can only have enabled only one mapset at time, but with as much maps enabled as you want --> + + <!-- If you have the reiseplaner maps installed, set enabled="yes" in the next line and set the path correctly --> + <mapset enabled="no"> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map"/> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp1.smp"/> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp2.smp"/> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp3.smp"/> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp4.smp"/> + <map type="mg" enabled="yes" data="/opt/reiseplaner/travel/DE.map/smp5.smp"/> + </mapset> + + <!-- If you dont want to use the sample map, either set enabled="no" in the next line or remove the xml file from the maps directory --> + <mapset enabled="no"> + <xi:include href="$NAVIT_SHAREDIR/maps/*.xml"/> + </mapset> + + <!-- Mapset template for openstreetmaps --> + <mapset enabled="no"> + <map type="binfile" enabled="yes" data="/media/mmc2/MapsNavit/osm_europe.bin"/> + </mapset> + <!-- Mapset template for openstreetmaps --> + <mapset enabled="yes"> + <map type="binfile" enabled="no" data="/usr/share/navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin"/> + <map type="binfile" enabled="yes" data="~/Maps/map.navit.bin"/> + </mapset> + + <!-- Mapset template for garmin maps --> + <mapset enabled="no"> + <map type="garmin" enabled="yes" data="/path/to/img" debug="4"/> + </mapset> + + <layer name="Found items" order="0-"> + <itemgra item_types="found_item"> + <circle color="#008080" radius="24" width="2" text_size="12"/> + </itemgra> + </layer> + + <layout name="Car" nightlayout="Car-dark" color="#ffefb7" font="Arial"> + + <cursor w="26" h="26"> + <itemgra> + <circle color="#0000ff" radius="24" width="2"> + <coord x="0" y="0"/> + </circle> + </itemgra> + <itemgra speed_range="-2"> + <polyline color="#0000ff" width="2"> + <coord x="0" y="0"/> + <coord x="0" y="0"/> + </polyline> + </itemgra> + <itemgra speed_range="3-"> + <polyline color="#0000ff" width="2"> + <coord x="-7" y="-10"/> + <coord x="0" y="12"/> + <coord x="7" y="-10"/> + </polyline> + </itemgra> + </cursor> + + <layer name="polygons"> + <itemgra item_types="image" order="0-"> + <image/> + </itemgra> + <itemgra item_types="poly_wood" order="8-"> + <polygon color="#8ec78d"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_farm" order="8-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_meadow" order="8-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + </itemgra> + <itemgra item_types="poly_town" order="0-"> + <polygon color="#ffc895"/> + <polyline color="#ebb481"/> + </itemgra> + <itemgra item_types="poly_university" order="8-"> + <polygon color="#d68fb8"/> + <polyline color="#881155"/> + </itemgra> + <itemgra item_types="poly_water_tiled" order="0-"> + <polygon color="#82c8ea"/> + </itemgra> + <itemgra item_types="poly_water" order="0-"> + <polygon color="#82c8ea"/> + <polyline color="#5096b8"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_land" order="0-"> + <polygon color="#ffefb7"/> + <polyline color="#ffefb7"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_flats,poly_scrub,poly_military_zone,poly_marine,plantation,tundra" order="9-"> + <polygon color="#a0a0a0"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_park" order="0-"> + <polygon color="#7cc334"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="10"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#dddddd" width="1"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="11"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#dddddd" width="3"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="12"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#dddddd" width="6"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="13"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#dddddd" width="7"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="14"> + <polyline color="#d2d2d2" width="13"/> + <polyline color="#dddddd" width="9"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="15"> + <polyline color="#d2d2d2" width="18"/> + <polyline color="#dddddd" width="14"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="16"> + <polyline color="#d2d2d2" width="21"/> + <polyline color="#dddddd" width="17"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="17"> + <polyline color="#d2d2d2" width="25"/> + <polyline color="#dddddd" width="21"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="18"> + <polyline color="#d2d2d2" width="40"/> + <polyline color="#dddddd" width="34"/> + <polygon color="#dddddd"/> + </itemgra> + <itemgra item_types="poly_airport" order="0-"> + <polygon color="#a0a0a0"/> + </itemgra> + <itemgra item_types="poly_sport,poly_sports_pitch" order="11-"> + <polygon color="#4af04f"/> + </itemgra> + <itemgra item_types="poly_industry,poly_place" order="11-"> + <polygon color="#e6e6e6"/> + </itemgra> + <itemgra item_types="poly_service" order="8-18"> + <polygon color="#fefefe"/> + <polyline color="#d2d2d2" width="1"/> + </itemgra> + <itemgra item_types="poly_street_1" order="8-13"> + <polygon color="#ffffff"/> + <polyline color="#d2d2d2" width="1"/> + </itemgra> + <itemgra item_types="poly_street_1" order="14-16"> + <polygon color="#ffffff"/> + <polyline color="#d2d2d2" width="2"/> + </itemgra> + <itemgra item_types="poly_street_1" order="17-18"> + <polygon color="#ffffff"/> + <polyline color="#d2d2d2" width="3"/> + </itemgra> + <itemgra item_types="poly_street_2" order="7-12"> + <polygon color="#ffff00"/> + <polyline color="#c0c0c0" width="1"/> + </itemgra> + <itemgra item_types="poly_street_2" order="13-16"> + <polygon color="#ffff00"/> + <polyline color="#c0c0c0" width="2"/> + </itemgra> + <itemgra item_types="poly_street_2" order="17-18"> + <polygon color="#ffff00"/> + <polyline color="#c0c0c0" width="3"/> + </itemgra> + <itemgra item_types="poly_street_3" order="7-11"> + <polygon color="#ffff00"/> + <polyline color="#a0a0a0" width="1"/> + </itemgra> + <itemgra item_types="poly_street_3" order="12-15"> + <polygon color="#ffff00"/> + <polyline color="#a0a0a0" width="2"/> + </itemgra> + <itemgra item_types="poly_street_3" order="16-18"> + <polygon color="#ffff00"/> + <polyline color="#a0a0a0" width="3"/> + </itemgra> + <itemgra item_types="water_line" order="0-"> + <polyline color="#5096b8" width="1"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_river" order="4-5"> + <polyline color="#82c8ea" width="1"/> + </itemgra> + <itemgra item_types="water_river" order="6"> + <polyline color="#82c8ea" width="2"/> + </itemgra> + <itemgra item_types="water_river" order="7"> + <polyline color="#82c8ea" width="3"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_river" order="8-9"> + <polyline color="#82c8ea" width="4"/> + <text text_size="7"/> + </itemgra> + <itemgra item_types="water_river" order="10-"> + <polyline color="#82c8ea" width="4"/> + <text text_size="10"/> + </itemgra> + <itemgra item_types="water_canal" order="6"> + <polyline color="#82c8ea" width="1"/> + </itemgra> + <itemgra item_types="water_canal" order="7"> + <polyline color="#82c8ea" width="2"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_canal" order="8-9"> + <polyline color="#82c8ea" width="3"/> + <text text_size="7"/> + </itemgra> + <itemgra item_types="water_canal" order="10-"> + <polyline color="#82c8ea" width="3"/> + <text text_size="10"/> + </itemgra> + <itemgra item_types="water_stream" order="8-9"> + <polyline color="#82c8ea" width="1"/> + </itemgra> + <itemgra item_types="water_stream" order="10-"> + <polyline color="#82c8ea" width="2"/> + <text text_size="7"/> + </itemgra> + <itemgra item_types="water_drain" order="10-"> + <polyline color="#82c8ea" width="1"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_apron" order="0-"> + <polygon color="#d0d0d0"/> + </itemgra> + <itemgra item_types="poly_terminal" order="7-"> + <polygon color="#e3c6a6"/> + </itemgra> + <itemgra item_types="poly_cemetery" order="11-"> + <polygon color="#bde3cb"/> + </itemgra> + <itemgra item_types="poly_car_parking" order="11-"> + <polygon color="#e7cf87"/> + </itemgra> + <itemgra item_types="poly_building" order="11-"> + <polygon color="#b6a6a6"/> + </itemgra> + <itemgra item_types="rail" order="6-"> + <polyline color="#696969" width="3"/> + <polyline color="#ffffff" width="1" dash="5,5"/> + </itemgra> + <itemgra item_types="ferry" order="5-"> + <polyline color="#000000" width="1" dash="10"/> + </itemgra> + <itemgra item_types="border_country" order="0-"> + <polyline color="#b8434e" width="1" dash="10,5,2,5"/> + </itemgra> + <itemgra item_types="border_state" order="0-"> + <polyline color="#808080" width="1"/> + </itemgra> + <itemgra item_types="height_line_1" order="0-"> + <polyline color="#000000" width="4"/> + </itemgra> + <itemgra item_types="height_line_2" order="0-"> + <polyline color="#000000" width="2"/> + </itemgra> + <itemgra item_types="height_line_3" order="0-"> + <polyline color="#000000" width="1"/> + </itemgra> + </layer> + <layer name="streets"> + <itemgra item_types="street_route" order="2"> + <polyline color="#0000a0" width="4"/> + </itemgra> + <itemgra item_types="street_route" order="3-5"> + <polyline color="#0000a0" width="8"/> + </itemgra> + <itemgra item_types="street_route" order="6"> + <polyline color="#0000a0" width="10"/> + </itemgra> + <itemgra item_types="street_route" order="7-8"> + <polyline color="#0000a0" width="16"/> + </itemgra> + <itemgra item_types="street_route" order="9-10"> + <polyline color="#0000a0" width="20"/> + </itemgra> + <itemgra item_types="street_route" order="11"> + <polyline color="#0000a0" width="28"/> + </itemgra> + <itemgra item_types="street_route" order="12"> + <polyline color="#0000a0" width="32"/> + </itemgra> + <itemgra item_types="street_route" order="13"> + <polyline color="#0000a0" width="52"/> + </itemgra> + <itemgra item_types="street_route" order="14"> + <polyline color="#0000a0" width="64"/> + </itemgra> + <itemgra item_types="street_route" order="15"> + <polyline color="#0000a0" width="68"/> + </itemgra> + <itemgra item_types="street_route" order="16"> + <polyline color="#0000a0" width="132"/> + </itemgra> + <itemgra item_types="street_route" order="17"> + <polyline color="#0000a0" width="268"/> + </itemgra> + <itemgra item_types="street_route" order="18"> + <polyline color="#0000a0" width="530"/> + </itemgra> + <itemgra item_types="selected_line" order="2"> + <polyline color="#ba00b8" width="4"/> + </itemgra> + <itemgra item_types="selected_line" order="3-5"> + <polyline color="#ba00b8" width="8"/> + </itemgra> + <itemgra item_types="selected_line" order="6"> + <polyline color="#ba00b8" width="10"/> + </itemgra> + <itemgra item_types="selected_line" order="7-8"> + <polyline color="#ba00b8" width="16"/> + </itemgra> + <itemgra item_types="selected_line" order="9-10"> + <polyline color="#ba00b8" width="20"/> + </itemgra> + <itemgra item_types="selected_line" order="11"> + <polyline color="#ba00b8" width="28"/> + </itemgra> + <itemgra item_types="selected_line" order="12"> + <polyline color="#ba00b8" width="32"/> + </itemgra> + <itemgra item_types="selected_line" order="13"> + <polyline color="#ba00b8" width="52"/> + </itemgra> + <itemgra item_types="selected_line" order="14"> + <polyline color="#ba00b8" width="64"/> + </itemgra> + <itemgra item_types="selected_line" order="15"> + <polyline color="#ba00b8" width="68"/> + </itemgra> + <itemgra item_types="selected_line" order="16"> + <polyline color="#ba00b8" width="132"/> + </itemgra> + <itemgra item_types="selected_line" order="17"> + <polyline color="#ba00b8" width="268"/> + </itemgra> + <itemgra item_types="selected_line" order="18"> + <polyline color="#ba00b8" width="530"/> + </itemgra> + <itemgra item_types="forest_way_1" order="10-"> + <polyline color="#0070c0" width="6"/> + </itemgra> + <itemgra item_types="forest_way_2" order="10-"> + <polyline color="#ff0000" width="3"/> + </itemgra> + <itemgra item_types="forest_way_3" order="10-"> + <polyline color="#ff0000" width="1" dash="2,4"/> + </itemgra> + <itemgra item_types="forest_way_4" order="10-"> + <polyline color="#119a2e" width="1" dash="4,10"/> + </itemgra> + <itemgra item_types="street_nopass" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="track_paved" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="track_gravelled,track_grass" order="10-12"> + <polyline color="#800000" width="1" dash="3,6"/> + </itemgra> + <itemgra item_types="track_gravelled,track_grass" order="13-14"> + <polyline color="#ffffff" width="4"/> + <polyline color="#800000" width="1" dash="4,8"/> + </itemgra> + <itemgra item_types="track_gravelled,track_grass" order="15-16"> + <polyline color="#ffffff" width="5"/> + <polyline color="#800000" width="1" dash="5,10"/> + </itemgra> + <itemgra item_types="track_gravelled,track_grass" order="17-"> + <polyline color="#ffffff" width="7"/> + <polyline color="#800000" width="1" dash="7,15"/> + </itemgra> + <itemgra item_types="track_unpaved,track_ground,path,hiking,hiking_mountain,hiking_mountain_demanding,hiking_alpine,hiking_alpine_demanding,hiking_alpine_difficult" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="bridleway" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="cycleway" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="10-12"> + <polyline color="#00A000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="13-14"> + <polyline color="#00A000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="15-16"> + <polyline color="#00A000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="17-"> + <polyline color="#00A000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="10-12"> + <polyline color="#0000ff" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="13-14"> + <polyline color="#0000ff" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="15-16"> + <polyline color="#0000ff" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="17-"> + <polyline color="#0000ff" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="10-12"> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="13-14"> + <polyline color="#ff0000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="15-16"> + <polyline color="#ff0000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="17-"> + <polyline color="#ff0000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="10-12"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="13-14"> + <polyline color="#000000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="15-16"> + <polyline color="#000000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="17-"> + <polyline color="#000000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="10-12"> + <polyline color="#ffaa00" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="13-14"> + <polyline color="#ffaa00" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="15-16"> + <polyline color="#ffaa00" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="17-"> + <polyline color="#ffaa00" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="10-12"> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="13-14"> + <polyline color="#ffff00" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="15-16"> + <polyline color="#ffff00" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="17-"> + <polyline color="#ffff00" width="5"/> + </itemgra> + <itemgra item_types="lift_cable_car" order="6-"> + <polyline color="#696969" width="1" dash="5"/> + </itemgra> + <itemgra item_types="lift_chair" order="6-"> + <polyline color="#696969" width="1" dash="5"/> + </itemgra> + <itemgra item_types="lift_drag" order="6-"> + <polyline color="#696969" width="1" dash="5"/> + </itemgra> + <itemgra item_types="piste_nordic" order="10-12"> + <polyline color="#0000ff" width="1" dash="3,6" offset="4"/> + </itemgra> + <itemgra item_types="piste_nordic" order="13-14"> + <polyline color="#ffffff" width="4" offset="6"/> + <polyline color="#0000ff" width="1" dash="4,8" offset="6"/> + </itemgra> + <itemgra item_types="piste_nordic" order="15-16"> + <polyline color="#ffffff" width="5" offset="7"/> + <polyline color="#0000ff" width="1" dash="5,10" offset="7"/> + </itemgra> + <itemgra item_types="piste_nordic" order="17-"> + <polyline color="#ffffff" width="7" offset="10"/> + <polyline color="#0000ff" width="1" dash="7,15" offset="10"/> + </itemgra> + <itemgra item_types="footway_and_piste_nordic" order="10-12"> + <polyline color="#ff0000" width="1" dash="3,15"/> + <polyline color="#0000ff" width="1" dash="3,15" offset="9"/> + </itemgra> + <itemgra item_types="footway_and_piste_nordic" order="13-14"> + <polyline color="#ffffff" width="4"/> + <polyline color="#ff0000" width="2"/> + <polyline color="#0000ff" width="1" dash="4,20" offset="12"/> + </itemgra> + <itemgra item_types="footway_and_piste_nordic" order="15-16"> + <polyline color="#ffffff" width="5"/> + <polyline color="#ff0000" width="3"/> + <polyline color="#0000ff" width="1" dash="5,25" offset="15"/> + </itemgra> + <itemgra item_types="footway_and_piste_nordic" order="17-"> + <polyline color="#ffffff" width="7"/> + <polyline color="#ff0000" width="5"/> + <polyline color="#0000ff" width="1" dash="7,37" offset="22"/> + </itemgra> + <itemgra item_types="footway" order="10-12"> + <polyline color="#ff0000" width="1" dash="3,6"/> + </itemgra> + <itemgra item_types="footway" order="13-14"> + <polyline color="#ffffff" width="4"/> + <polyline color="#ff0000" width="1" dash="4,8"/> + </itemgra> + <itemgra item_types="footway" order="15-16"> + <polyline color="#ffffff" width="5"/> + <polyline color="#ff0000" width="1" dash="5,10"/> + </itemgra> + <itemgra item_types="footway" order="17-"> + <polyline color="#ffffff" width="7"/> + <polyline color="#ff0000" width="1" dash="7,15"/> + </itemgra> + <itemgra item_types="steps" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="10"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#dddddd" width="1"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="11"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#dddddd" width="3"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="12"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#dddddd" width="6"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="13"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#dddddd" width="7"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="14"> + <polyline color="#d2d2d2" width="13"/> + <polyline color="#dddddd" width="9"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="15"> + <polyline color="#d2d2d2" width="18"/> + <polyline color="#dddddd" width="14"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="16"> + <polyline color="#d2d2d2" width="21"/> + <polyline color="#dddddd" width="17"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="17"> + <polyline color="#d2d2d2" width="25"/> + <polyline color="#dddddd" width="21"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="18"> + <polyline color="#d2d2d2" width="40"/> + <polyline color="#dddddd" width="34"/> + </itemgra> + <itemgra item_types="street_service" order="10"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="11"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="12"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#fefefe" width="3"/> + </itemgra> + <itemgra item_types="street_service" order="13"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#fefefe" width="4"/> + </itemgra> + <itemgra item_types="street_service" order="14"> + <polyline color="#d2d2d2" width="7"/> + <polyline color="#fefefe" width="5"/> + </itemgra> + <itemgra item_types="street_service" order="15"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#fefefe" width="6"/> + </itemgra> + <itemgra item_types="street_service" order="16"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#fefefe" width="7"/> + </itemgra> + <itemgra item_types="street_service" order="17"> + <polyline color="#d2d2d2" width="10"/> + <polyline color="#fefefe" width="8"/> + </itemgra> + <itemgra item_types="street_service" order="18"> + <polyline color="#d2d2d2" width="11"/> + <polyline color="#fefefe" width="9"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="12"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="13"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="14"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#fefefe" width="3"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="15"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#fefefe" width="4"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="16"> + <polyline color="#d2d2d2" width="7"/> + <polyline color="#fefefe" width="5"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="17"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#fefefe" width="6"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="18"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#fefefe" width="7"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="10"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#ffffff" width="2"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="11"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#ffffff" width="4"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="12"> + <polyline color="#d2d2d2" width="10"/> + <polyline color="#ffffff" width="8"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="13"> + <polyline color="#d2d2d2" width="11"/> + <polyline color="#ffffff" width="9"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="14"> + <polyline color="#d2d2d2" width="17"/> + <polyline color="#ffffff" width="13"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="15"> + <polyline color="#d2d2d2" width="18"/> + <polyline color="#ffffff" width="14"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="16"> + <polyline color="#d2d2d2" width="30"/> + <polyline color="#ffffff" width="26"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="17"> + <polyline color="#d2d2d2" width="67"/> + <polyline color="#ffffff" width="61"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="18"> + <polyline color="#d2d2d2" width="132"/> + <polyline color="#ffffff" width="126"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="7-8"> + <polyline color="#c0c0c0" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="9"> + <polyline color="#c0c0c0" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="10"> + <polyline color="#c0c0c0" width="4"/> + <polyline color="#ffff00" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="11"> + <polyline color="#c0c0c0" width="5"/> + <polyline color="#ffff00" width="3"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="12"> + <polyline color="#c0c0c0" width="7"/> + <polyline color="#ffff00" width="5"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="13"> + <polyline color="#c0c0c0" width="11"/> + <polyline color="#ffff00" width="8"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="14"> + <polyline color="#c0c0c0" width="14"/> + <polyline color="#ffff00" width="11"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="15"> + <polyline color="#c0c0c0" width="19"/> + <polyline color="#ffff00" width="15"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="16"> + <polyline color="#c0c0c0" width="30"/> + <polyline color="#ffff00" width="26"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="17"> + <polyline color="#c0c0c0" width="63"/> + <polyline color="#ffff00" width="57"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="18"> + <polyline color="#c0c0c0" width="100"/> + <polyline color="#ffff00" width="90"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="7-8"> + <polyline color="#a0a0a0" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="9"> + <polyline color="#a0a0a0" width="5"/> + <polyline color="#ffff00" width="3"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="10"> + <polyline color="#a0a0a0" width="8"/> + <polyline color="#ffff00" width="6"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="11"> + <polyline color="#a0a0a0" width="9"/> + <polyline color="#ffff00" width="7"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="12"> + <polyline color="#a0a0a0" width="13"/> + <polyline color="#ffff00" width="9"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="13"> + <polyline color="#a0a0a0" width="18"/> + <polyline color="#ffff00" width="14"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="14"> + <polyline color="#a0a0a0" width="21"/> + <polyline color="#ffff00" width="17"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="15"> + <polyline color="#a0a0a0" width="25"/> + <polyline color="#ffff00" width="21"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="16"> + <polyline color="#a0a0a0" width="40"/> + <polyline color="#ffff00" width="34"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="17"> + <polyline color="#a0a0a0" width="79"/> + <polyline color="#ffff00" width="73"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="18"> + <polyline color="#a0a0a0" width="156"/> + <polyline color="#ffff00" width="150"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="2-6"> + <polyline color="#404040" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="7-8"> + <polyline color="#404040" width="3"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="9"> + <polyline color="#000000" width="5"/> + <polyline color="#ff0000" width="3"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10"> + <polyline color="#000000" width="6"/> + <polyline color="#ff0000" width="4"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11"> + <polyline color="#000000" width="9"/> + <polyline color="#ff0000" width="7"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="12"> + <polyline color="#000000" width="13"/> + <polyline color="#ff0000" width="9"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="13"> + <polyline color="#000000" width="18"/> + <polyline color="#ff0000" width="14"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="14"> + <polyline color="#000000" width="21"/> + <polyline color="#ff0000" width="17"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="15"> + <polyline color="#000000" width="24"/> + <polyline color="#ff0000" width="20"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="16"> + <polyline color="#000000" width="39"/> + <polyline color="#ff0000" width="33"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="17"> + <polyline color="#000000" width="78"/> + <polyline color="#ff0000" width="72"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="18"> + <polyline color="#000000" width="156"/> + <polyline color="#ff0000" width="150"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="2"> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="3-5"> + <polyline color="#ff0000" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="6"> + <polyline color="#ff0000" width="4"/> + <polyline color="#ffff00" width="2"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="7-8"> + <polyline color="#ff0000" width="7"/> + <polyline color="#ffff00" width="5"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="9-10"> + <polyline color="#ff0000" width="9"/> + <polyline color="#ffff00" width="5"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="11"> + <polyline color="#ff0000" width="13"/> + <polyline color="#ffff00" width="9"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="12"> + <polyline color="#ff0000" width="15"/> + <polyline color="#ffff00" width="10"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="13"> + <polyline color="#ff0000" width="25"/> + <polyline color="#ffff00" width="17"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="14"> + <polyline color="#ff0000" width="31"/> + <polyline color="#ffff00" width="24"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="15"> + <polyline color="#ff0000" width="33"/> + <polyline color="#ffff00" width="27"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="16"> + <polyline color="#ff0000" width="65"/> + <polyline color="#ffff00" width="59"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="17"> + <polyline color="#ff0000" width="133"/> + <polyline color="#ffff00" width="127"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="18"> + <polyline color="#ff0000" width="264"/> + <polyline color="#ffff00" width="258"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="tracking_0" order="0-"> + <polyline color="#000000" width="3"/> + </itemgra> + <itemgra item_types="tracking_10" order="0-"> + <polyline color="#191919" width="3"/> + </itemgra> + <itemgra item_types="tracking_20" order="0-"> + <polyline color="#333333" width="3"/> + </itemgra> + <itemgra item_types="tracking_30" order="0-"> + <polyline color="#4c4c4c" width="3"/> + </itemgra> + <itemgra item_types="tracking_40" order="0-"> + <polyline color="#666666" width="3"/> + </itemgra> + <itemgra item_types="tracking_50" order="0-"> + <polyline color="#7f7f7f" width="3"/> + </itemgra> + <itemgra item_types="tracking_60" order="0-"> + <polyline color="#999999" width="3"/> + </itemgra> + <itemgra item_types="tracking_70" order="0-"> + <polyline color="#b2b2b2" width="3"/> + </itemgra> + <itemgra item_types="tracking_80" order="0-"> + <polyline color="#cccccc" width="3"/> + </itemgra> + <itemgra item_types="tracking_90" order="0-"> + <polyline color="#e5e5e5" width="3"/> + </itemgra> + <itemgra item_types="tracking_100" order="0-"> + <polyline color="#ffffff" width="3"/> + </itemgra> + <itemgra item_types="highway_exit_label" order="10-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="highway_city,highway_land,street_4_city,street_4_land,street_n_lanes,living_street" order="10-18"> + <text text_size="8"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,street_3_city,street_3_land,ramp" order="11-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="street_nopass,street_0,street_1_city,street_1_land,footway" order="12-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="2"> + <polyline color="#ff9000" width="2"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="3-5"> + <polyline color="#ff9000" width="4"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="6"> + <polyline color="#ff9000" width="5"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="7-8"> + <polyline color="#ff9000" width="8"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="9-10"> + <polyline color="#ff9000" width="10"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="11"> + <polyline color="#ff9000" width="14"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="12"> + <polyline color="#ff9000" width="16"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="13"> + <polyline color="#ff9000" width="26"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="14"> + <polyline color="#ff9000" width="32"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="15"> + <polyline color="#ff9000" width="34"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="16"> + <polyline color="#ff9000" width="66"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="17"> + <polyline color="#ff9000" width="134"/> + </itemgra> + <itemgra item_types="traffic_distortion" order="18"> + <polyline color="#ff9000" width="265"/> + </itemgra> + </layer> + <layer name="polylines"> + <itemgra item_types="aeroway_taxiway" order="10"> + <polyline color="#989994" width="4"/> + <polyline color="#d3dbbc" width="2"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="11"> + <polyline color="#989994" width="6"/> + <polyline color="#d3dbbc" width="4"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="12"> + <polyline color="#989994" width="10"/> + <polyline color="#d3dbbc" width="8"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="13"> + <polyline color="#989994" width="12"/> + <polyline color="#d3dbbc" width="9"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="14"> + <polyline color="#989994" width="15"/> + <polyline color="#d3dbbc" width="13"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="15"> + <polyline color="#989994" width="17"/> + <polyline color="#d3dbbc" width="14"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="16"> + <polyline color="#989994" width="33"/> + <polyline color="#d3dbbc" width="26"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="17"> + <polyline color="#989994" width="69"/> + <polyline color="#d3dbbc" width="61"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="18"> + <polyline color="#989994" width="132"/> + <polyline color="#d3dbbc" width="126"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="2-6"> + <polyline color="#404040" width="1"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="7-8"> + <polyline color="#404040" width="3"/> + <polyline color="#d3dbbc" width="1"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="9"> + <polyline color="#6b6f5f" width="5"/> + <polyline color="#d3dbbc" width="3"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="10"> + <polyline color="#6b6f5f" width="6"/> + <polyline color="#d3dbbc" width="4"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="11"> + <polyline color="#6b6f5f" width="9"/> + <polyline color="#d3dbbc" width="7"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="12"> + <polyline color="#6b6f5f" width="13"/> + <polyline color="#d3dbbc" width="9"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="13"> + <polyline color="#6b6f5f" width="18"/> + <polyline color="#d3dbbc" width="14"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="14"> + <polyline color="#6b6f5f" width="21"/> + <polyline color="#d3dbbc" width="17"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="15"> + <polyline color="#6b6f5f" width="24"/> + <polyline color="#d3dbbc" width="20"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="16"> + <polyline color="#6b6f5f" width="39"/> + <polyline color="#d3dbbc" width="33"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="17"> + <polyline color="#6b6f5f" width="78"/> + <polyline color="#d3dbbc" width="72"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="18"> + <polyline color="#6b6f5f" width="156"/> + <polyline color="#d3dbbc" width="150"/> + </itemgra> + <itemgra item_types="rail_tram" order="10-"> + <polyline color="#606060" width="2"/> + </itemgra> + </layer> + <layer name="labels"> + <itemgra item_types="house_number" order="15-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="11-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e3,district_label_2e3,district_label_5e3" order="10-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_1e3,place_label" order="10-"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="district_label_1e4,district_label_2e4,district_label_5e4" order="9-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_2e3" order="9-"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_5e3,town_label_1e4,town_label_2e4,town_label_5e4" order="9-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="district_label_1e5,district_label_2e5,district_label_5e5" order="8-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_2e3" order="8"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e6,district_label_2e6,district_label_5e6,district_label_1e7" order="7-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_5e3" order="7-8"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_1e4" order="6-8"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_2e4,town_label_5e4" order="5-8"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" order="5-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" order="5-"> + <circle color="#000000" radius="3" text_size="20"/> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" order="3-4"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" order="3-4"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" order="0-2"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + </layer> + <layer name="Internal"> + <itemgra item_types="track" order="7-"> + <polyline color="#3f3f3f" width="1"/> + </itemgra> + <itemgra item_types="track_tracked" order="7-"> + <polyline color="#3f3fff" width="3"/> + </itemgra> + <itemgra item_types="rg_segment" order="12-"> + <polyline color="#FF089C" width="1"/> + <arrows color="#FF089C" width="1"/> + <text text_size="15"/> + </itemgra> + <itemgra item_types="rg_point" order="12-"> + <circle color="#FF089C" radius="10" text_size="7"/> + </itemgra> + <itemgra item_types="nav_left_1" order="0-"> + <icon src="nav_left_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_2" order="0-"> + <icon src="nav_left_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_3" order="0-"> + <icon src="nav_left_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_1" order="0-"> + <icon src="nav_right_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_2" order="0-"> + <icon src="nav_right_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_3" order="0-"> + <icon src="nav_right_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_straight" order="0-"> + <icon src="nav_straight_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_left" order="0-"> + <icon src="nav_turnaround_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_right" order="0-"> + <icon src="nav_turnaround_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l1" order="0-"> + <icon src="nav_roundabout_l1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r1" order="0-"> + <icon src="nav_roundabout_r1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l2" order="0-"> + <icon src="nav_roundabout_l2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r2" order="0-"> + <icon src="nav_roundabout_r2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l3" order="0-"> + <icon src="nav_roundabout_l3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r3" order="0-"> + <icon src="nav_roundabout_r3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l4" order="0-"> + <icon src="nav_roundabout_l4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r4" order="0-"> + <icon src="nav_roundabout_r4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l5" order="0-"> + <icon src="nav_roundabout_l5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r5" order="0-"> + <icon src="nav_roundabout_r5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l6" order="0-"> + <icon src="nav_roundabout_l6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r6" order="0-"> + <icon src="nav_roundabout_r6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l7" order="0-"> + <icon src="nav_roundabout_l7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r7" order="0-"> + <icon src="nav_roundabout_r7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l8" order="0-"> + <icon src="nav_roundabout_l8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r8" order="0-"> + <icon src="nav_roundabout_r8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_left" order="0-"> + <icon src="nav_keep_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_left" order="0-"> + <icon src="nav_merge_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_right" order="0-"> + <icon src="nav_keep_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_right" order="0-"> + <icon src="nav_merge_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_left" order="0-"> + <icon src="nav_exit_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_right" order="0-"> + <icon src="nav_exit_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="route_end" order="0-"> + <icon src="nav_destination_bk.svg" w="32" h="32" x="4" y="30"/> + </itemgra> + <itemgra item_types="nav_none" order="0-"> + <icon src="unknown.svg"/> + </itemgra> + <itemgra item_types="announcement" order="7-"> + <icon src="gui_sound_32_32.svg"/> + <circle color="#FF089C" radius="10" text_size="7"/> + </itemgra> + + <itemgra item_types="waypoint,route_end" order="2"> + <circle color="#008080" radius="4" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="3-5"> + <circle color="#008080" radius="8" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="6"> + <circle color="#008080" radius="10" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="7-8"> + <circle color="#008080" radius="16" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="9-10"> + <circle color="#008080" radius="20" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="11"> + <circle color="#008080" radius="28" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="12"> + <circle color="#008080" radius="32" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="13"> + <circle color="#008080" radius="52" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="14"> + <circle color="#008080" radius="64" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="15"> + <circle color="#008080" radius="68" width="6" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="16"> + <circle color="#008080" radius="132" width="8" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="17"> + <circle color="#008080" radius="268" width="8" text_size="48"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="18"> + <circle color="#008080" radius="530" width="8" text_size="48"/> + </itemgra> + </layer> + <layer name="Unknown" enabled="no"> + <!-- This entry shows all unknow point elements as blue circles --> + <itemgra item_types="point_unkn" order="9-"> + <circle color="#8080ff" radius="3"/> + </itemgra> + <!-- This entry shows all unknown linear elements as blue lines --> + <itemgra item_types="street_unkn" order="0-"> + <polyline color="#8080ff" width="3"/> + </itemgra> + </layer> + <layer name="POI Road items"> + <itemgra item_types="mini_roundabout" order="12-"> + <icon src="mini_roundabout.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="turning_circle" order="12-"> + <icon src="mini_roundabout.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bridge" order="12-"> + <icon src="bridge.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="highway_exit" order="11-"> + <icon src="exit.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_border_station" order="12-"> + <icon src="border_station.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_crossing" order="12-"> + <icon src="crossing.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_height" order="12-"> + <icon src="height.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_level_crossing" order="11-"> + <icon src="level_crossing.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_tunnel" order="12-"> + <icon src="tunnel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="traffic_signals" order="13-"> + <icon src="traffic_signals.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="barrier_bollard" order="12-"> + <icon src="barrier_bollard.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="barrier_lift_gate" order="12-"> + <icon src="barrier_lift_gate.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI public transport"> + <itemgra item_types="poi_airport" order="5-"> + <icon src="airport.svg" h="20" w="20"/> + </itemgra> + <itemgra item_types="poi_car_sharing" order="11-"> + <icon src="car_sharing.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_rail_halt" order="11-"> + <circle color="#ff0000" radius="3" width="3"/> + <circle color="#000000" radius="5" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_rail_station" order="9-"> + <circle color="#ff0000" radius="3" width="3"/> + <circle color="#000000" radius="6" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="10-11"> + <circle color="#ff0000" radius="2" width="2"/> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="12-"> + <circle color="#ff0000" radius="3" width="3"/> + <circle color="#606060" radius="5" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_taxi" order="13-"> + <icon src="taxi.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bus_station" order="11-"> + <icon src="bus.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bus_stop" order="12-"> + <icon src="bus_stop.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_heliport" order="12-"> + <icon src="heliport.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI public transport Labels"> + <itemgra item_types="poi_airport,poi_car_sharing,poi_taxi,poi_bus_station,poi_bus_stop,poi_heliport" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI Car"> + <itemgra item_types="poi_car_parking" order="11-"> + <icon src="parking.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_fuel" order="12-"> + <icon src="fuel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_repair_service" order="12-"> + <icon src="repair_service.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI Car Labels"> + <itemgra item_types="poi_car_parking,poi_fuel,poi_repair_service" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI accomodation"> + <itemgra item_types="poi_resort" order="12-"> + <icon src="resort.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hotel" order="12-"> + <icon src="hotel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_guesthouse" order="12-"> + <icon src="guesthouse.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_motel" order="12-"> + <icon src="motel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hostel" order="12-"> + <icon src="hostel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_cafe" order="12-"> + <icon src="cafe.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bar" order="12-"> + <icon src="bar.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_pub" order="12-"> + <icon src="beer.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_dining" order="12-"> + <icon src="restaurant.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_fastfood" order="12-"> + <icon src="fastfood.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_camp_rv" order="12-"> + <icon src="camping.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_restaurant" order="12-"> + <icon src="restaurant.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_picnic" order="12-"> + <icon src="picnic.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_biergarten" order="12-"> + <icon src="beer.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_wine" order="12-"> + <icon src="wine.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI accomodation Labels"> + <itemgra item_types="poi_resort,poi_hotel,poi_guesthouse,poi_motel,poi_hostel,poi_dining,poi_restaurant" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_cafe,poi_bar,poi_pub,poi_fastfood,poi_camp_rv,poi_picnic,poi_biergarten,poi_wine" order="15-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI religion"> + <itemgra item_types="poi_worship" order="11-"> + <icon src="worship.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_church" order="11-"> + <icon src="church.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bahai" order="11-"> + <icon src="bahai.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_buddhist" order="11-"> + <icon src="buddhist.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hindu" order="11-"> + <icon src="hindu.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_islamic" order="11-"> + <icon src="islamic.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_jain" order="11-"> + <icon src="jain.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_jewish" order="11-"> + <icon src="jewish.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_pagan" order="11-"> + <icon src="pagan.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_pastafarian" order="11-"> + <icon src="pastafarian.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shinto" order="11-"> + <icon src="shinto.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_sikh" order="11-"> + <icon src="sikh.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_taoist" order="11-"> + <icon src="taoist.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_cemetery" order="12-"> + <icon src="cemetery.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI religion Labels"> + <itemgra item_types="poi_worship,poi_church,poi_bahai,poi_buddhist,poi_hindu,poi_islamic,poi_jain,poi_jewish,poi_pagan,poi_pastafarian,poi_shinto,poi_sikh,poi_taoist,poi_cemetery" order="15-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI government"> + <itemgra item_types="poi_townhall" order="13-"> + <icon src="townhall.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_government_building" order="13-"> + <icon src="goverment_building.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_justice" order="13-"> + <icon src="justice.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_post_office,poi_post_box" order="13-"> + <icon src="post.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_public_office" order="13-"> + <icon src="public_office.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_military" order="13-"> + <icon src="military.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_school" order="13-"> + <icon src="school.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_atm" order="12-"> + <icon src="atm.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bank" order="13-"> + <icon src="bank.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_forbidden_area" order="13-"> + <icon src="forbiden_area.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI government Labels"> + <itemgra item_types="poi_townhall,poi_government_building,poi_justice,poi_public_office,poi_military,poi_school,poi_forbidden_area" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_post_office,poi_post_box,poi_atm,poi_bank" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI cultural"> + <itemgra item_types="poi_cinema" order="12-"> + <icon src="cinema.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_casino" order="12-"> + <icon src="casino.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_library" order="12-"> + <icon src="library.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_theater" order="12-"> + <icon src="theater.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_concert" order="12-"> + <icon src="concert.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_attraction" order="11-"> + <icon src="attraction.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_museum_history" order="12-"> + <icon src="museum.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_zoo" order="9-"> + <icon src="zoo.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI cultural Labels"> + <itemgra item_types="poi_attraction,poi_museum_history" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_cinema,poi_casino,poi_library,poi_theater,poi_concert,poi_zoo" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI commercial"> + <itemgra item_types="poi_mall" order="14-"> + <icon src="mall.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_car_dealer_parts" order="14-"> + <icon src="car_dealer.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shopping" order="14-"> + <icon src="shopping.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_car_rent" order="14-"> + <icon src="car_rent.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_car_wash" order="14-"> + <icon src="car_wash.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_fair" order="14-"> + <icon src="fair.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_kiosk" order="14-"> + <icon src="shop_kiosk.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_apparel" order="14-"> + <icon src="shop_apparel.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_computer" order="14-"> + <icon src="shop_computer.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_department" order="14-"> + <icon src="shop_department.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_furniture" order="14-"> + <icon src="shop_furnish.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_grocery" order="14-"> + <icon src="shop_grocery.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_baker" order="14-"> + <icon src="shop_butcher.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_butcher" order="14-"> + <icon src="shop_baker.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_shoes" order="14-"> + <icon src="shop_shoes.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_optician" order="14-"> + <icon src="shop_optician.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_handg" order="14-"> + <icon src="shop_handg.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_merchandise" order="14-"> + <icon src="shop_merchandise.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_retail" order="14-"> + <icon src="shop_retail.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_beverages" order="14-"> + <icon src="shop_beverages.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_bicycle" order="14-"> + <icon src="bicycle_shop.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_florist" order="14-"> + <icon src="shop_florist.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shop_gps" order="14-"> + <icon src="garmin.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_vending_machine" order="14-"> + <icon src="vending_machine.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hairdresser" order="14-"> + <icon src="shop_baker.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_autoservice" order="14-"> + <icon src="car_dealer.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI commercial Labels"> + <itemgra item_types="poi_mall,poi_car_dealer_parts,poi_shopping,poi_car_rent,poi_car_wash,poi_fair,poi_shop_kiosk,poi_shop_apparel,poi_shop_computer,poi_shop_department,poi_shop_furniture,poi_shop_grocery,poi_shop_baker,poi_shop_butcher,poi_shop_shoes,poi_shop_optician,poi_shop_handg,poi_shop_merchandise,poi_shop_retail,poi_shop_beverages,poi_shop_bicycle,poi_shop_florist,poi_shop_gps,poi_vending_machine,poi_hairdresser,poi_autoservice" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI geocache"> + <itemgra item_types="poi_gc_multi" order="12-"> + <icon src="gc_multi.svg"/> + </itemgra> + <itemgra item_types="poi_gc_tradi" order="12-"> + <icon src="gc_tradi.svg"/> + </itemgra> + <itemgra item_types="poi_gc_event" order="12-"> + <icon src="gc_event.svg"/> + </itemgra> + <itemgra item_types="poi_gc_mystery" order="12-"> + <icon src="gc_mystery.svg"/> + </itemgra> + <itemgra item_types="poi_gc_question" order="12-"> + <icon src="gc_question.svg"/> + </itemgra> + <itemgra item_types="poi_gc_stages" order="12-"> + <icon src="gc_stages.svg"/> + </itemgra> + <itemgra item_types="poi_gc_reference" order="12-"> + <icon src="gc_reference.svg"/> + </itemgra> + <itemgra item_types="poi_gc_webcam" order="12-"> + <icon src="gc_webcam.svg"/> + </itemgra> + </layer> + <layer name="POI health"> + <itemgra item_types="poi_hospital" order="12-"> + <icon src="hospital.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_police" order="12-"> + <icon src="police.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_emergency" order="12-"> + <icon src="emergency.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_firebrigade" order="13-"> + <icon src="firebrigade.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_pharmacy" order="13-"> + <icon src="pharmacy.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI health Labels"> + <itemgra item_types="poi_hospital,poi_police,poi_emergency,poi_firebrigade,poi_pharmacy" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI pedestrian"> + <itemgra item_types="poi_communication" order="13-"> + <icon src="communication.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bench" order="15-"> + <icon src="bench.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hunting_stand" order="14-"> + <icon src="hunting_stand.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_memorial" order="12-"> + <icon src="memorial.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_monument" order="12-"> + <icon src="memorial.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shelter" order="13-"> + <icon src="shelter.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_fountain" order="13-"> + <icon src="fountain.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_potable_water" order="14-"> + <icon src="drinking_water.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_toilets" order="13-"> + <icon src="toilets.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_restroom" order="13-"> + <icon src="toilets.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_shower" order="14-"> + <icon src="shower.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_viewpoint" order="10-"> + <icon src="viewpoint.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_telephone" order="14-"> + <icon src="telephone.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_wifi" order="14-"> + <icon src="wifi.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_drinking_water" order="13-"> + <icon src="drinking_water.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_boundary_stone" order="14-"> + <icon src="boundary_stone.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_information" order="13-"> + <icon src="information.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bicycle_parking" order="15-"> + <icon src="bicycle_parking.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI pedestrian Labels"> + <itemgra item_types="poi_communication,poi_bench,poi_hunting_stand,poi_memorial,poi_monument,poi_shelter,poi_fountain,poi_potable_water,poi_toilets,poi_restroom,poi_shower,poi_viewpoint,poi_telephone,poi_wifi,poi_drinking_water,poi_boundary_stone,poi_information,poi_bicycle_parking" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI landscape"> + <itemgra item_types="town_ghost" order="10-"> + <icon src="ghost_town.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bay" order="12-"> + <icon src="bay.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_cove" order="12-"> + <icon src="cove.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_dam" order="12-"> + <icon src="dam.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_hotspring" order="12-"> + <icon src="hotspring.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_landmark" order="11-"> + <icon src="landmark.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_castle" order="11-"> + <icon src="castle.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_ruins" order="11-"> + <icon src="ruins.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_mark" order="12-"> + <icon src="mark.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_mine" order="12-"> + <icon src="mine.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_tower" order="13-"> + <icon src="tower.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_scenic_area" order="12-"> + <icon src="scenic_area.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_peak" order="7-"> + <icon src="peak.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_oil_field" order="12-"> + <icon src="oil_field.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_tree" order="14-"> + <icon src="tree.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI landscape Labels"> + <itemgra item_types="town_ghost,poi_bay,poi_cove,poi_dam,poi_hotspring,poi_landmark,poi_castle,poi_ruins,poi_scenic_area,poi_peak,poi_oil_field" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_mark,poi_mine,poi_tree" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI sport"> + <itemgra item_types="poi_diving" order="13-"> + <icon src="diving.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_fish" order="13-"> + <icon src="fish.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_golf" order="13-"> + <icon src="golf.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_icesport" order="13-"> + <icon src="icesport.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_soccer" order="13-"> + <icon src="soccer.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_sailing" order="13-"> + <icon src="sailing.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_skiing" order="13-"> + <icon src="skiing.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_sport" order="13-"> + <icon src="sport.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_stadium" order="13-"> + <icon src="stadium.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_swimming" order="13-"> + <icon src="swimming.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_trail" order="13-"> + <icon src="trail.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_tide" order="13-"> + <icon src="tide.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bowling" order="13-"> + <icon src="bowling.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_climbing" order="13-"> + <icon src="climbing.svg" h="15" w="15"/> + </itemgra> + </layer> + <layer name="POI sport Labels"> + <itemgra item_types="poi_icesport,poi_soccer,poi_stadium,poi_swimming" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_diving,poi_fish,poi_golf,poi_sailing,poi_skiing,poi_sport,poi_trail,poi_tide,poi_bowling,poi_climbing" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="POI Symbols"> + <itemgra item_types="poi_auto_club" order="12-"> + <icon src="auto_club.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_bend" order="12-"> + <icon src="bend.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_boat_ramp" order="12-"> + <icon src="boat_ramp.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_business_service" order="12-"> + <icon src="bussines_service.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_danger_area" order="12-"> + <icon src="danger_16_16.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_danger_sea_wreck" order="12-"> + <icon src="dangerous.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_daymark" order="12-"> + <icon src="daymark.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_levee" order="12-"> + <icon src="levee.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_locale" order="12-"> + <icon src="locale.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_loudspeaker" order="12-"> + <icon src="loudspeaker.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_manmade_feature" order="12-"> + <icon src="manmade_feature.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_marine" order="12-"> + <icon src="marine.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_marine_type" order="12-"> + <icon src="marine_type.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_nondangerous" order="12-"> + <icon src="nondangerous.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_personal_service" order="12-"> + <icon src="personal_service.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_restricted_area" order="12-"> + <icon src="restricted_area.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_service" order="12-"> + <icon src="service.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_social_service" order="12-"> + <icon src="social_service.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_sounding" order="12-"> + <icon src="sounding.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_wrecker" order="12-"> + <icon src="wrecker.svg" h="15" w="15"/> + </itemgra> + <itemgra item_types="poi_image" order="12-"> + <image/> + </itemgra> + <itemgra item_types="tec_common" order="11-"> + <icon src="tec_common.svg"/> + </itemgra> + <itemgra item_types="vehicle" order="0-"> + <icon src="gui_vehicle_16_16.svg" /> + </itemgra> + <itemgra item_types="vehicle_pedestrian" order="0-"> + <icon src="gui_vehicle_pedestrian_16_16.svg" /> + </itemgra> + <itemgra item_types="poi_custom0,poi_custom1,poi_custom2,poi_custom3,poi_custom4,poi_custom5,poi_custom6,poi_custom7,poi_custom8,poi_custom9,poi_customa,poi_customb,poi_customc,poi_customd,poi_custome,poi_customf" order="10-"> + <icon src="%s" /> + </itemgra> + </layer> + <layer name="POI symbols Labels"> + <itemgra item_types="poi_auto_club,poi_bend,poi_boat_ramp,poi_business_service,poi_danger_area,poi_danger_sea_wreck,poi_daymark,poi_levee,poi_locale,poi_loudspeaker,poi_manmade_feature,poi_marine,poi_marine_type,poi_nondangerous,poi_personal_service,poi_restricted_area,poi_service,poi_social_service,poi_sounding,poi_wrecker,poi_image,vehicle,vehicle_pedestrian" order="16-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + <itemgra item_types="poi_custom0,poi_custom1,poi_custom2,poi_custom3,poi_custom4,poi_custom5,poi_custom6,poi_custom7,poi_custom8,poi_custom9,poi_customa,poi_customb,poi_customc,poi_customd,poi_custome,poi_customf" order="10-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + + <layout name="Car-dark" daylayout="Car" color="#011001"> + + <cursor w="26" h="26"> + <itemgra> + <circle color="#00ff00" radius="24" width="2"> + <coord x="0" y="0"/> + </circle> + </itemgra> + <itemgra speed_range="-2"> + <polyline color="#00ff00" width="2"> + <coord x="0" y="0"/> + <coord x="0" y="0"/> + </polyline> + </itemgra> + <itemgra speed_range="3-"> + <polyline color="#00ff00" width="2"> + <coord x="-7" y="-10"/> + <coord x="0" y="12"/> + <coord x="7" y="-10"/> + </polyline> + </itemgra> + </cursor> + + <layer name="polygons"> + <itemgra item_types="image" order="0-"> + <image/> + </itemgra> + <itemgra item_types="poly_wood" order="0-"> + <polygon color="#041a06"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_flats,poly_scrub,poly_military_zone,poly_marine,plantation,tundra" order="0-"> + <polygon color="#041a06"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_farm" order="0-"> + <polygon color="#041a06"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_meadow" order="0-"> + <polygon color="#041a06"/> + </itemgra> + <itemgra item_types="poly_town" order="0-"> + <polygon color="#191711"/> + </itemgra> + <itemgra item_types="poly_university" order="8-"> + <polygon color="#140f14"/> + </itemgra> + <itemgra item_types="poly_water" order="0-"> + <polygon color="#010321"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_land" order="0-"> + <polygon color="#011001"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_park" order="0-"> + <polygon color="#041a06"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="10"> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="11"> + <polyline color="#1e0728" width="3"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="12"> + <polyline color="#1e0728" width="5"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="13"> + <polyline color="#1e0728" width="6"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="14"> + <polyline color="#1e0728" width="7"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="15"> + <polyline color="#1e0728" width="9"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="16"> + <polyline color="#1e0728" width="10"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="17"> + <polyline color="#1e0728" width="12"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_pedestrian" order="18"> + <polyline color="#1e0728" width="20"/> + <polygon color="#202020"/> + </itemgra> + <itemgra item_types="poly_airport" order="0-"> + <polygon color="#002e00"/> + </itemgra> + <itemgra item_types="poly_sport,poly_sports_pitch" order="0-"> + <polygon color="#0c220c"/> + </itemgra> + <itemgra item_types="poly_industry,poly_place" order="0-"> + <polygon color="#111111"/> + </itemgra> + <itemgra item_types="poly_service" order="8-18"> + <polygon color="#1a1a1a"/> + <polyline color="#282828" width="1"/> + </itemgra> + <itemgra item_types="poly_street_1" order="8-13"> + <polygon color="#24092f"/> + </itemgra> + <itemgra item_types="poly_street_1" order="14-16"> + <polygon color="#24092f"/> + </itemgra> + <itemgra item_types="poly_street_1" order="17-18"> + <polygon color="#24092f"/> + </itemgra> + <itemgra item_types="poly_street_2" order="7-12"> + <polygon color="#c5c300"/> + <polyline color="#c0c0c0" width="1"/> + </itemgra> + <itemgra item_types="poly_street_2" order="13-16"> + <polygon color="#c5c300"/> + <polyline color="#c0c0c0" width="2"/> + </itemgra> + <itemgra item_types="poly_street_2" order="17-18"> + <polygon color="#c5c300"/> + <polyline color="#c0c0c0" width="3"/> + </itemgra> + <itemgra item_types="poly_street_3" order="7-11"> + <polygon color="#c5c300"/> + <polyline color="#a0a0a0" width="1"/> + </itemgra> + <itemgra item_types="poly_street_3" order="12-15"> + <polygon color="#c5c300"/> + <polyline color="#a0a0a0" width="2"/> + </itemgra> + <itemgra item_types="poly_street_3" order="16-18"> + <polygon color="#c5c300"/> + <polyline color="#a0a0a0" width="3"/> + </itemgra> + <itemgra item_types="water_line" order="0-"> + <polyline color="#010321" width="1"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="water_river" order="4-5"> + <polyline color="#010321" width="1"/> + </itemgra> + <itemgra item_types="water_river" order="6"> + <polyline color="#010321" width="2"/> + </itemgra> + <itemgra item_types="water_river" order="7"> + <polyline color="#010321" width="3"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="water_river" order="8-9"> + <polyline color="#010321" width="4"/> + <text color="#55c4bd" background_color="#000000" text_size="7"/> + </itemgra> + <itemgra item_types="water_river" order="10-"> + <polyline color="#010321" width="4"/> + <text color="#55c4bd" background_color="#000000" text_size="10"/> + </itemgra> + <itemgra item_types="water_canal" order="6"> + <polyline color="#010321" width="1"/> + </itemgra> + <itemgra item_types="water_canal" order="7"> + <polyline color="#010321" width="2"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="water_canal" order="8-9"> + <polyline color="#010321" width="3"/> + <text color="#55c4bd" background_color="#000000" text_size="7"/> + </itemgra> + <itemgra item_types="water_canal" order="10-"> + <polyline color="#010321" width="3"/> + <text color="#55c4bd" background_color="#000000" text_size="10"/> + </itemgra> + <itemgra item_types="water_stream" order="8-9"> + <polyline color="#010321" width="1"/> + </itemgra> + <itemgra item_types="water_stream" order="10-"> + <polyline color="#010321" width="2"/> + <text color="#55c4bd" background_color="#000000" text_size="7"/> + </itemgra> + <itemgra item_types="water_drain" order="10-"> + <polyline color="#010321" width="1"/> + <text color="#55c4bd" background_color="#000000" text_size="5"/> + </itemgra> + <itemgra item_types="poly_apron" order="0-"> + <polygon color="#041a06"/> + </itemgra> + <itemgra item_types="poly_terminal" order="7-"> + <polygon color="#282424"/> + </itemgra> + <itemgra item_types="poly_cemetery" order="8-"> + <polygon color="#041a06"/> + </itemgra> + <itemgra item_types="poly_car_parking" order="8-"> + <polygon color="#1a170f"/> + </itemgra> + <itemgra item_types="poly_building" order="8-"> + <polygon color="#282424"/> + </itemgra> + <itemgra item_types="rail" order="6-8"> + <polyline color="#282828" width="2"/> + <polyline color="#3d3d3d" dash="1,5" width="1"/> + </itemgra> + <itemgra item_types="rail" order="9-"> + <polyline color="#282828" width="3"/> + <polyline color="#3d3d3d" dash="1,5" width="1"/> + </itemgra> + <itemgra item_types="ferry" order="5-"> + <polyline color="#113111" width="1" dash="10"/> + </itemgra> + <itemgra item_types="border_country" order="0-"> + <polyline color="#0d0b41" width="1" dash="10,5,2,5"/> + </itemgra> + <itemgra item_types="border_state" order="0-"> + <polyline color="#808080" width="1"/> + </itemgra> + <itemgra item_types="height_line_1" order="0-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="height_line_2" order="0-"> + <polyline color="#000000" width="2"/> + </itemgra> + </layer> + <layer name="streets"> + <itemgra item_types="street_route" order="2"> + <polyline color="#0000a0" width="4"/> + </itemgra> + <itemgra item_types="street_route" order="3-5"> + <polyline color="#0000a0" width="8"/> + </itemgra> + <itemgra item_types="street_route" order="6"> + <polyline color="#0000a0" width="10"/> + </itemgra> + <itemgra item_types="street_route" order="7-8"> + <polyline color="#0000a0" width="16"/> + </itemgra> + <itemgra item_types="street_route" order="9-10"> + <polyline color="#0000a0" width="20"/> + </itemgra> + <itemgra item_types="street_route" order="11"> + <polyline color="#0000a0" width="28"/> + </itemgra> + <itemgra item_types="street_route" order="12"> + <polyline color="#0000a0" width="32"/> + </itemgra> + <itemgra item_types="street_route" order="13"> + <polyline color="#0000a0" width="52"/> + </itemgra> + <itemgra item_types="street_route" order="14"> + <polyline color="#0000a0" width="64"/> + </itemgra> + <itemgra item_types="street_route" order="15"> + <polyline color="#0000a0" width="68"/> + </itemgra> + <itemgra item_types="street_route" order="16"> + <polyline color="#0000a0" width="132"/> + </itemgra> + <itemgra item_types="street_route" order="17"> + <polyline color="#0000a0" width="268"/> + </itemgra> + <itemgra item_types="street_route" order="18"> + <polyline color="#0000a0" width="530"/> + </itemgra> + <itemgra item_types="street_nopass" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="track_paved" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="track_gravelled" order="10-12"> + <polyline color="#800000" width="1" dash="3,6"/> + </itemgra> + <itemgra item_types="track_gravelled" order="13-14"> + <polyline color="#3d3d3d" width="4"/> + <polyline color="#800000" width="1" dash="4,8"/> + </itemgra> + <itemgra item_types="track_gravelled" order="15-16"> + <polyline color="#3d3d3d" width="5"/> + <polyline color="#800000" width="1" dash="5,10"/> + </itemgra> + <itemgra item_types="track_gravelled" order="17-"> + <polyline color="#3d3d3d" width="7"/> + <polyline color="#800000" width="1" dash="7,15"/> + </itemgra> + <itemgra item_types="track_unpaved" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="bridleway" order="10-"> + <polyline color="#1e0728" width="1"/> + </itemgra> + <itemgra item_types="cycleway" order="10-"> + <polyline color="#1e0728" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="10-12"> + <polyline color="#00A000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="13-14"> + <polyline color="#00A000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="15-16"> + <polyline color="#00A000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_novice" order="17-"> + <polyline color="#00A000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="10-12"> + <polyline color="#0000ff" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="13-14"> + <polyline color="#0000ff" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="15-16"> + <polyline color="#0000ff" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_easy" order="17-"> + <polyline color="#0000ff" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="10-12"> + <polyline color="#900000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="13-14"> + <polyline color="#900000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="15-16"> + <polyline color="#900000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_intermediate" order="17-"> + <polyline color="#900000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="10-12"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="13-14"> + <polyline color="#000000" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="15-16"> + <polyline color="#000000" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_advanced" order="17-"> + <polyline color="#000000" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="10-12"> + <polyline color="#ffaa00" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="13-14"> + <polyline color="#ffaa00" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="15-16"> + <polyline color="#ffaa00" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_expert" order="17-"> + <polyline color="#ffaa00" width="5"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="10-12"> + <polyline color="#c5c300" width="1"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="13-14"> + <polyline color="#c5c300" width="2"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="15-16"> + <polyline color="#c5c300" width="3"/> + </itemgra> + <itemgra item_types="piste_downhill_freeride" order="17-"> + <polyline color="#c5c300" width="5"/> + </itemgra> + <itemgra item_types="lift_cable_car" order="6-"> + <polyline color="#3d3d3d" width="1" dash="5"/> + </itemgra> + <itemgra item_types="lift_chair" order="6-"> + <polyline color="#3d3d3d" width="1" dash="5"/> + </itemgra> + <itemgra item_types="lift_drag" order="6-"> + <polyline color="#3d3d3d" width="1" dash="5"/> + </itemgra> + <itemgra item_types="piste_nordic" order="10-12"> + <polyline color="#0000ff" width="1" dash="3,6"/> + </itemgra> + <itemgra item_types="piste_nordic" order="13-14"> + <polyline color="#0000ff" width="2"/> + <polyline color="#000000" width="1" dash="4,8"/> + </itemgra> + <itemgra item_types="piste_nordic" order="15-16"> + <polyline color="#0000ff" width="3"/> + <polyline color="#000000" width="1" dash="5,10"/> + </itemgra> + <itemgra item_types="piste_nordic" order="17-"> + <polyline color="#0000ff" width="5"/> + <polyline color="#000000" width="1" dash="7,15"/> + </itemgra> + <itemgra item_types="footway" order="11-12"> + <polyline color="#4e0000" width="1" dash="3,6"/> + </itemgra> + <itemgra item_types="footway" order="13-14"> + <polyline color="#4e0000" width="2"/> + <polyline color="#000000" width="1" dash="4,8"/> + </itemgra> + <itemgra item_types="footway" order="15-16"> + <polyline color="#4e0000" width="3"/> + <polyline color="#000000" width="1" dash="5,10"/> + </itemgra> + <itemgra item_types="footway" order="17-"> + <polyline color="#4e0000" width="5"/> + <polyline color="#000000" width="1" dash="7,15"/> + </itemgra> + <itemgra item_types="steps" order="14-15"> + <polyline color="#4d4e11" width="1"/> + </itemgra> + <itemgra item_types="steps" order="16"> + <polyline color="#4d4e11" width="2"/> + </itemgra> + <itemgra item_types="steps" order="17-18"> + <polyline color="#4d4e11" width="3"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="10"> + <polyline color="#1e0728" width="1"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="11"> + <polyline color="#1e0728" width="5"/> + <polyline color="#202020" width="2"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="12"> + <polyline color="#1e0728" width="8"/> + <polyline color="#202020" width="3"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="13"> + <polyline color="#1e0728" width="9"/> + <polyline color="#202020" width="4"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="14"> + <polyline color="#1e0728" width="13"/> + <polyline color="#202020" width="7"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="15"> + <polyline color="#1e0728" width="18"/> + <polyline color="#202020" width="10"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="16"> + <polyline color="#1e0728" width="21"/> + <polyline color="#202020" width="13"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="17"> + <polyline color="#1e0728" width="25"/> + <polyline color="#202020" width="17"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="18"> + <polyline color="#1e0728" width="40"/> + <polyline color="#202020" width="30"/> + </itemgra> + <itemgra item_types="street_service" order="10"> + <polyline color="#2c2c2c" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="11"> + <polyline color="#2c2c2c" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="12"> + <polyline color="#2c2c2c" width="3"/> + </itemgra> + <itemgra item_types="street_service" order="13"> + <polyline color="#2c2c2c" width="4"/> + </itemgra> + <itemgra item_types="street_service" order="14"> + <polyline color="#2c2c2c" width="5"/> + </itemgra> + <itemgra item_types="street_service" order="15"> + <polyline color="#2c2c2c" width="6"/> + </itemgra> + <itemgra item_types="street_service" order="16"> + <polyline color="#2c2c2c" width="7"/> + </itemgra> + <itemgra item_types="street_service" order="17"> + <polyline color="#2c2c2c" width="8"/> + </itemgra> + <itemgra item_types="street_service" order="18"> + <polyline color="#2c2c2c" width="9"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="12"> + <polyline color="#2c2c2c" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="13"> + <polyline color="#2c2c2c" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="14"> + <polyline color="#2c2c2c" width="3"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="15"> + <polyline color="#2c2c2c" width="4"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="16"> + <polyline color="#2c2c2c" width="5"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="17"> + <polyline color="#2c2c2c" width="6"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="18"> + <polyline color="#2c2c2c" width="7"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="10"> + <polyline color="#24092f" width="2"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="11"> + <polyline color="#24092f" width="3"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="12"> + <polyline color="#24092f" width="5"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="13"> + <polyline color="#24092f" width="9"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="14"> + <polyline color="#24092f" width="13"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="15"> + <polyline color="#24092f" width="14"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="16"> + <polyline color="#24092f" width="26"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="17"> + <polyline color="#24092f" width="61"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="18"> + <polyline color="#24092f" width="126"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="8"> + <polyline color="#1d4c19" width="1"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="9"> + <polyline color="#1d4c19" width="1"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="10"> + <polyline color="#1d4c19" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="11"> + <polyline color="#1d4c19" width="4"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="12"> + <polyline color="#1d4c19" width="7"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="13"> + <polyline color="#1d4c19" width="11"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="14"> + <polyline color="#1d4c19" width="14"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="15"> + <polyline color="#1d4c19" width="17"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="16"> + <polyline color="#1d4c19" width="30"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="17"> + <polyline color="#1d4c19" width="67"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="18"> + <polyline color="#1d4c19" width="138"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="7-8"> + <polyline color="#4d4e11" width="1"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="9"> + <polyline color="#4d4e11" width="2"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="10"> + <polyline color="#4d4e11" width="4"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="11"> + <polyline color="#4d4e11" width="5"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="12"> + <polyline color="#4d4e11" width="7"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="13"> + <polyline color="#4d4e11" width="14"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="14"> + <polyline color="#4d4e11" width="17"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="15"> + <polyline color="#4d4e11" width="21"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="16"> + <polyline color="#4d4e11" width="34"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="17"> + <polyline color="#4d4e11" width="73"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp,roundabout" order="18"> + <polyline color="#4d4e11" width="150"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="2-5"> + <polyline color="#430000" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="6-8"> + <polyline color="#430000" width="2"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="9"> + <polyline color="#430000" width="3"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10"> + <polyline color="#430000" width="4"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11"> + <polyline color="#430000" width="7"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="12"> + <polyline color="#430000" width="9"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="13"> + <polyline color="#430000" width="14"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="14"> + <polyline color="#430000" width="17"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="15"> + <polyline color="#430000" width="20"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="16"> + <polyline color="#430000" width="33"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="17"> + <polyline color="#430000" width="72"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="18"> + <polyline color="#430000" width="150"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="2"> + <polyline color="#760000" width="1"/> + </itemgra> + <!--1d4c19/0d740d--> + <itemgra item_types="highway_city,highway_land" order="3-5"> + <polyline color="#640000" width="3"/> + <polyline color="#0a5c0a" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="6"> + <polyline color="#640000" width="4"/> + <polyline color="#0a5c0a" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="7-8"> + <polyline color="#640000" width="6"/> + <polyline color="#005b00" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="9-10"> + <polyline color="#640000" width="8"/> + <polyline color="#0a5c0a" width="2"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="11"> + <polyline color="#640000" width="12"/> + <polyline color="#0a5c0a" width="3"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="12"> + <polyline color="#640000" width="13"/> + <polyline color="#0a5c0a" width="3"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="13"> + <polyline color="#640000" width="17"/> + <polyline color="#0a5c0a" width="4"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="14"> + <polyline color="#640000" width="24"/> + <polyline color="#0a5c0a" width="4"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="15"> + <polyline color="#640000" width="27"/> + <polyline color="#0a5c0a" width="5"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="16"> + <polyline color="#640000" width="59"/> + <polyline color="#0a5c0a" width="6"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="17"> + <polyline color="#640000" width="127"/> + <polyline color="#0a5c0a" width="7"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="18"> + <polyline color="#640000" width="258"/> + <polyline color="#0a5c0a" width="8"/> + </itemgra> + <!-- This entry shows all unknown linear elements as blue lines --> + <!-- + <itemgra item_types="street_unkn" order="0-"> + <polyline color="#8080ff" width="3"/> + </itemgra> + --> + <itemgra item_types="highway_exit_label" order="10-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="highway_city,highway_land,street_4_city,street_4_land,street_n_lanes,living_street" order="10-18"> + <text text_size="8" color="#55c4bd" background_color="#000000"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,street_3_city,street_3_land,ramp" order="11-18"> + <text text_size="9" color="#55c4bd" background_color="#000000"/> + </itemgra> + <itemgra item_types="street_nopass,street_0,street_1_city,street_1_land,footway" order="12-18"> + <text text_size="9" color="#55c4bd" background_color="#000000"/> + </itemgra> + </layer> + <layer name="polylines"> + <itemgra item_types="aeroway_taxiway" order="10"> + <polyline color="#404040" width="4"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="11"> + <polyline color="#404040" width="6"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="12"> + <polyline color="#404040" width="10"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="13"> + <polyline color="#404040" width="12"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="14"> + <polyline color="#404040" width="15"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="15"> + <polyline color="#404040" width="17"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="16"> + <polyline color="#404040" width="33"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="17"> + <polyline color="#404040" width="69"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="18"> + <polyline color="#404040" width="132"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="2-6"> + <polyline color="#404040" width="1"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="7-8"> + <polyline color="#404040" width="3"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="9"> + <polyline color="#404040" width="5"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="10"> + <polyline color="#404040" width="6"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="11"> + <polyline color="#404040" width="9"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="12"> + <polyline color="#404040" width="13"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="13"> + <polyline color="#404040" width="18"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="14"> + <polyline color="#404040" width="21"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="15"> + <polyline color="#404040" width="24"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="16"> + <polyline color="#404040" width="39"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="17"> + <polyline color="#404040" width="78"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="18"> + <polyline color="#404040" width="156"/> + </itemgra> + <itemgra item_types="rail_tram,bus_guideway" order="10-"> + <polyline color="#3d3d3d" width="2"/> + </itemgra> + </layer> + <layer name="labels"> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="12-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e3,district_label_2e3,district_label_5e3" order="11-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_1e3,town_label_2e3,town_label_5e3,place_label" order="10-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e4,district_label_2e4,district_label_5e4" order="9-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_1e4,town_label_2e4,town_label_5e4" order="8-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e5,district_label_2e5,district_label_5e5" order="6-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" order="4-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="district_label_1e6,district_label_2e6,district_label_5e6" order="3-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6" order="2-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e7,district_label_1e7" order="1-"> + <circle color="#55c4bd" background_color="#000000" radius="3" text_size="15"/> + </itemgra> + </layer> + <layer name="Internal"> + <itemgra item_types="track" order="3-"> + <polyline color="#3f3f3f" width="1"/> + </itemgra> + <itemgra item_types="track_tracked" order="7-"> + <polyline color="#3f3fff" width="3"/> + </itemgra> + <itemgra item_types="rg_segment" order="0-"> + <polyline color="#FF089C" width="1"/> + <arrows color="#FF089C" width="1"/> + </itemgra> + <itemgra item_types="rg_point" order="0-"> + <circle color="#FF089C" radius="10" background_color="#000000" text_size="7"/> + </itemgra> + <itemgra item_types="nav_left_1" order="0-"> + <icon src="nav_left_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_2" order="0-"> + <icon src="nav_left_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_3" order="0-"> + <icon src="nav_left_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_1" order="0-"> + <icon src="nav_right_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_2" order="0-"> + <icon src="nav_right_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_3" order="0-"> + <icon src="nav_right_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_straight" order="0-"> + <icon src="nav_straight_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_left" order="0-"> + <icon src="nav_turnaround_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_right" order="0-"> + <icon src="nav_turnaround_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l1" order="0-"> + <icon src="nav_roundabout_l1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r1" order="0-"> + <icon src="nav_roundabout_r1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l2" order="0-"> + <icon src="nav_roundabout_l2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r2" order="0-"> + <icon src="nav_roundabout_r2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l3" order="0-"> + <icon src="nav_roundabout_l3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r3" order="0-"> + <icon src="nav_roundabout_r3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l4" order="0-"> + <icon src="nav_roundabout_l4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r4" order="0-"> + <icon src="nav_roundabout_r4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l5" order="0-"> + <icon src="nav_roundabout_l5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r5" order="0-"> + <icon src="nav_roundabout_r5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l6" order="0-"> + <icon src="nav_roundabout_l6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r6" order="0-"> + <icon src="nav_roundabout_r6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l7" order="0-"> + <icon src="nav_roundabout_l7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r7" order="0-"> + <icon src="nav_roundabout_r7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l8" order="0-"> + <icon src="nav_roundabout_l8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r8" order="0-"> + <icon src="nav_roundabout_r8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_left" order="0-"> + <icon src="nav_keep_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_left" order="0-"> + <icon src="nav_merge_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_right" order="0-"> + <icon src="nav_keep_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_right" order="0-"> + <icon src="nav_merge_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_left" order="0-"> + <icon src="nav_exit_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_right" order="0-"> + <icon src="nav_exit_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="route_end" order="0-"> + <icon src="nav_destination_wh.svg" w="32" h="32" x="4" y="30"/> + </itemgra> + <itemgra item_types="nav_none" order="0-"> + <icon src="unknown.svg"/> + </itemgra> + <itemgra item_types="announcement" order="7-"> + <icon src="gui_sound_32_32.svg"/> + <circle color="#FF089C" radius="10" background_color="#000000" text_size="7"/> + </itemgra> + + <itemgra item_types="waypoint,route_end" order="2"> + <circle color="#00a0a0" radius="4" width="2" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="3-5"> + <circle color="#00a0a0" radius="8" width="2" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="6"> + <circle color="#00a0a0" radius="10" width="2" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="7-8"> + <circle color="#00a0a0" radius="16" width="2" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="9-10"> + <circle color="#00a0a0" radius="20" width="4" background_color="#000000" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="11"> + <circle color="#00a0a0" radius="28" width="4" background_color="#000000" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="12"> + <circle color="#00a0a0" radius="32" width="4" background_color="#000000" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="13"> + <circle color="#00a0a0" radius="52" width="4" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="14"> + <circle color="#00a0a0" radius="64" width="4" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="15"> + <circle color="#00a0a0" radius="68" width="6" background_color="#000000" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="16"> + <circle color="#00a0a0" radius="132" width="8" background_color="#000000" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="17"> + <circle color="#00a0a0" radius="268" width="8" background_color="#000000" text_size="48"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="18"> + <circle color="#00a0a0" radius="530" width="8" background_color="#000000" text_size="48"/> + </itemgra> + </layer> + <layer name="points"> + <itemgra item_types="mini_roundabout" order="12-"> + <icon src="mini_roundabout.svg"/> + </itemgra> + <itemgra item_types="turning_circle" order="12-"> + <icon src="mini_roundabout.svg"/> + </itemgra> + <itemgra item_types="poi_airport" order="5-"> + <icon src="airport.svg"/> + </itemgra> + <itemgra item_types="town_ghost" order="0-"> + <icon src="ghost_town.svg"/> + </itemgra> + <itemgra item_types="poi_hotel" order="12-"> + <icon src="hotel.svg"/> + </itemgra> + <itemgra item_types="poi_car_parking" order="11-"> + <icon src="parking.svg"/> + </itemgra> + <itemgra item_types="poi_car_sharing" order="11-"> + <icon src="car_sharing.svg"/> + </itemgra> + <itemgra item_types="poi_car_dealer_parts" order="0-"> + <icon src="car_dealer.svg"/> + </itemgra> + <itemgra item_types="poi_fuel" order="10-"> + <icon src="fuel.svg"/> + </itemgra> + <itemgra item_types="poi_shopping" order="14-"> + <icon src="shopping.svg"/> + </itemgra> + <itemgra item_types="poi_attraction" order="8-"> + <icon src="attraction.svg"/> + </itemgra> + <itemgra item_types="poi_cafe" order="12-"> + <icon src="cafe.svg"/> + </itemgra> + <itemgra item_types="poi_bar" order="12-"> + <icon src="bar.svg"/> + </itemgra> + <itemgra item_types="poi_pub" order="12-"> + <icon src="beer.svg"/> + </itemgra> + <itemgra item_types="poi_bridge" order="0-"> + <icon src="bridge.svg"/> + </itemgra> + <itemgra item_types="highway_exit" order="11-"> + <icon src="exit.svg"/> + </itemgra> + <itemgra item_types="poi_camp_rv" order="9-"> + <icon src="camping.svg"/> + </itemgra> + <itemgra item_types="poi_museum_history" order="12-"> + <icon src="museum.svg"/> + </itemgra> + <itemgra item_types="poi_hospital" order="12-"> + <icon src="hospital.svg"/> + </itemgra> + <!-- not really usefull --> + <!-- + <itemgra item_types="point_unkn" order="0-"> + <circle color="#8080ff" radius="3"/> + </itemgra> + --> + <itemgra item_types="poi_dining" order="12-"> + <icon src="restaurant.svg"/> + </itemgra> + <itemgra item_types="poi_fastfood" order="12-"> + <icon src="fastfood.svg"/> + </itemgra> + <itemgra item_types="poi_police" order="12-"> + <icon src="police.svg"/> + </itemgra> + <itemgra item_types="poi_auto_club" order="0-"> + <icon src="auto_club.svg"/> + </itemgra> + <itemgra item_types="poi_autoservice" order="0-"> + <icon src="car_dealer.svg"/> + </itemgra> + <itemgra item_types="poi_bank" order="12-"> + <icon src="bank.svg"/> + </itemgra> + <itemgra item_types="poi_atm" order="12-"> + <icon src="atm.svg"/> + </itemgra> + <itemgra item_types="poi_bay" order="0-"> + <icon src="bay.svg"/> + </itemgra> + <itemgra item_types="poi_bend" order="0-"> + <icon src="bend.svg"/> + </itemgra> + <itemgra item_types="poi_boat_ramp" order="12-"> + <icon src="boat_ramp.svg"/> + </itemgra> + <itemgra item_types="poi_border_station" order="0-"> + <icon src="border_station.svg"/> + </itemgra> + <itemgra item_types="poi_bowling" order="0-"> + <icon src="bowling.svg"/> + </itemgra> + <itemgra item_types="poi_bus_station" order="12-"> + <icon src="bus.svg"/> + </itemgra> + <itemgra item_types="poi_bus_stop" order="12-"> + <icon src="bus_stop.svg"/> + </itemgra> + <itemgra item_types="poi_business_service" order="0-"> + <icon src="bussines_service.svg"/> + </itemgra> + <itemgra item_types="poi_car_rent" order="11-"> + <icon src="car_rent.svg"/> + </itemgra> + <itemgra item_types="poi_car_wash" order="12-"> + <icon src="car_wash.svg"/> + </itemgra> + <itemgra item_types="poi_casino" order="11-"> + <icon src="casino.svg"/> + </itemgra> + <itemgra item_types="poi_cemetery" order="11-"> + <icon src="cemetery.svg"/> + </itemgra> + <itemgra item_types="poi_church" order="11-"> + <icon src="church.svg"/> + </itemgra> + <itemgra item_types="poi_bahai" order="11-"> + <icon src="bahai.svg"/> + </itemgra> + <itemgra item_types="poi_buddhist" order="11-"> + <icon src="buddhist.svg"/> + </itemgra> + <itemgra item_types="poi_hindu" order="11-"> + <icon src="hindu.svg"/> + </itemgra> + <itemgra item_types="poi_islamic" order="11-"> + <icon src="islamic.svg"/> + </itemgra> + <itemgra item_types="poi_jain" order="11-"> + <icon src="jain.svg"/> + </itemgra> + <itemgra item_types="poi_jewish" order="11-"> + <icon src="jewish.svg"/> + </itemgra> + <itemgra item_types="poi_pagan" order="11-"> + <icon src="pagan.svg"/> + </itemgra> + <itemgra item_types="poi_pastafarian" order="11-"> + <icon src="pastafarian.svg"/> + </itemgra> + <itemgra item_types="poi_shinto" order="11-"> + <icon src="shinto.svg"/> + </itemgra> + <itemgra item_types="poi_sikh" order="11-"> + <icon src="sikh.svg"/> + </itemgra> + <itemgra item_types="poi_taoist" order="11-"> + <icon src="taoist.svg"/> + </itemgra> + <itemgra item_types="poi_cinema" order="12-"> + <icon src="cinema.svg"/> + </itemgra> + <itemgra item_types="poi_communication" order="0-"> + <icon src="communication.svg"/> + </itemgra> + <itemgra item_types="poi_concert" order="0-"> + <icon src="concert.svg"/> + </itemgra> + <itemgra item_types="poi_cove" order="0-"> + <icon src="cove.svg"/> + </itemgra> + <itemgra item_types="poi_crossing" order="0-"> + <icon src="crossing.svg"/> + </itemgra> + <itemgra item_types="poi_dam" order="0-"> + <icon src="dam.svg"/> + </itemgra> + <itemgra item_types="poi_danger_area" order="12-"> + <icon src="danger_16_16.svg"/> + </itemgra> + <itemgra item_types="poi_danger_sea_wreck" order="0-"> + <icon src="dangerous.svg"/> + </itemgra> + <itemgra item_types="poi_daymark" order="0-"> + <icon src="daymark.svg"/> + </itemgra> + <itemgra item_types="poi_diving" order="0-"> + <icon src="diving.svg"/> + </itemgra> + <itemgra item_types="poi_drinking_water" order="0-"> + <icon src="drinking_water.svg"/> + </itemgra> + <itemgra item_types="poi_emergency" order="0-"> + <icon src="emergency.svg"/> + </itemgra> + <itemgra item_types="poi_fair" order="0-"> + <icon src="fair.svg"/> + </itemgra> + <itemgra item_types="poi_firebrigade" order="12-"> + <icon src="firebrigade.svg"/> + </itemgra> + <itemgra item_types="poi_fish" order="0-"> + <icon src="fish.svg"/> + </itemgra> + <itemgra item_types="poi_forbidden_area" order="0-"> + <icon src="forbiden_area.svg"/> + </itemgra> + <itemgra item_types="poi_shop_gps" order="14-"> + <icon src="garmin.svg"/> + </itemgra> + <itemgra item_types="poi_golf" order="12-"> + <icon src="golf.svg"/> + </itemgra> + <itemgra item_types="poi_government_building" order="0-"> + <icon src="goverment_building.svg"/> + </itemgra> + <itemgra item_types="poi_height" order="0-"> + <icon src="height.svg"/> + </itemgra> + <itemgra item_types="poi_heliport" order="7-"> + <icon src="heliport.svg"/> + </itemgra> + <itemgra item_types="poi_hotspring" order="0-"> + <icon src="hotspring.svg"/> + </itemgra> + <itemgra item_types="poi_icesport" order="0-"> + <icon src="icesport.svg"/> + </itemgra> + <itemgra item_types="poi_information" order="12-"> + <icon src="information.svg"/> + </itemgra> + <itemgra item_types="poi_justice" order="10-"> + <icon src="justice.svg"/> + </itemgra> + <itemgra item_types="poi_landmark" order="0-"> + <icon src="landmark.svg"/> + </itemgra> + <itemgra item_types="poi_levee" order="0-"> + <icon src="levee.svg"/> + </itemgra> + <itemgra item_types="poi_level_crossing" order="11-"> + <icon src="level_crossing.svg"/> + </itemgra> + <itemgra item_types="poi_library" order="12-"> + <icon src="library.svg"/> + </itemgra> + <itemgra item_types="poi_locale" order="0-"> + <icon src="locale.svg"/> + </itemgra> + <itemgra item_types="poi_loudspeaker" order="0-"> + <icon src="loudspeaker.svg"/> + </itemgra> + <itemgra item_types="poi_mall" order="0-"> + <icon src="mall.svg"/> + </itemgra> + <itemgra item_types="poi_manmade_feature" order="0-"> + <icon src="manmade_feature.svg"/> + </itemgra> + <itemgra item_types="poi_marine" order="0-"> + <icon src="marine.svg"/> + </itemgra> + <itemgra item_types="poi_marine_type" order="0-"> + <icon src="marine_type.svg"/> + </itemgra> + <itemgra item_types="poi_mark" order="0-"> + <icon src="mark.svg"/> + </itemgra> + <itemgra item_types="poi_military" order="0-"> + <icon src="military.svg"/> + </itemgra> + <itemgra item_types="poi_mine" order="0-"> + <icon src="mine.svg"/> + </itemgra> + <itemgra item_types="poi_nondangerous" order="0-"> + <icon src="nondangerous.svg"/> + </itemgra> + <itemgra item_types="poi_oil_field" order="0-"> + <icon src="oil_field.svg"/> + </itemgra> + <itemgra item_types="poi_peak" order="6-"> + <icon src="peak.svg"/> + </itemgra> + <itemgra item_types="poi_personal_service" order="0-"> + <icon src="personal_service.svg"/> + </itemgra> + <itemgra item_types="poi_pharmacy" order="12-"> + <icon src="pharmacy.svg"/> + </itemgra> + <itemgra item_types="poi_post_office,poi_post_box" order="13-"> + <icon src="post.svg"/> + </itemgra> + <itemgra item_types="poi_public_office" order="0-"> + <icon src="public_office.svg"/> + </itemgra> + <itemgra item_types="poi_rail_halt" order="10-"> + <circle color="#000000" radius="3" width="3"/> + <circle color="#3d3d3d" background_color="#000000" radius="6" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_rail_station" order="11-"> + <circle color="#000000" radius="3" width="3"/> + <circle color="#3d3d3d" background_color="#000000" radius="6" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="10-11"> + <circle color="#3d3d3d" background_color="#000000" radius="2" width="2"/> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="12-"> + <circle color="#000000" radius="3" width="3"/> + <circle color="#3d3d3d" background_color="#000000" radius="6" width="2" text_size="8"/> + </itemgra> + <itemgra item_types="poi_repair_service" order="0-"> + <icon src="repair_service.svg"/> + </itemgra> + <itemgra item_types="poi_resort" order="0-"> + <icon src="resort.svg"/> + </itemgra> + <itemgra item_types="poi_restaurant" order="12-"> + <icon src="restaurant.svg"/> + </itemgra> + <itemgra item_types="poi_restricted_area" order="0-"> + <icon src="restricted_area.svg"/> + </itemgra> + <itemgra item_types="poi_restroom" order="13-"> + <icon src="toilets.svg"/> + </itemgra> + <itemgra item_types="poi_sailing" order="0-"> + <icon src="sailing.svg"/> + </itemgra> + <itemgra item_types="poi_scenic_area" order="0-"> + <icon src="scenic_area.svg"/> + </itemgra> + <itemgra item_types="poi_school" order="12-"> + <icon src="school.svg"/> + </itemgra> + <itemgra item_types="poi_service" order="0-"> + <icon src="service.svg"/> + </itemgra> + <itemgra item_types="poi_shop_apparel" order="14-"> + <icon src="shop_apparel.svg"/> + </itemgra> + <itemgra item_types="poi_shop_computer" order="14-"> + <icon src="shop_computer.svg"/> + </itemgra> + <itemgra item_types="poi_shop_department" order="14-"> + <icon src="shop_department.svg"/> + </itemgra> + <itemgra item_types="poi_shop_furniture" order="14-"> + <icon src="shop_furnish.svg"/> + </itemgra> + <itemgra item_types="poi_shop_grocery" order="14-"> + <icon src="shop_grocery.svg"/> + </itemgra> + <itemgra item_types="poi_shop_handg" order="14-"> + <icon src="shop_handg.svg"/> + </itemgra> + <itemgra item_types="poi_shop_merchandise" order="14-"> + <icon src="shop_merchandise.svg"/> + </itemgra> + <itemgra item_types="poi_shop_retail" order="14-"> + <icon src="shop_retail.svg"/> + </itemgra> + <itemgra item_types="poi_shower" order="0-"> + <icon src="shower.svg"/> + </itemgra> + <itemgra item_types="poi_skiing" order="12-"> + <icon src="skiing.svg"/> + </itemgra> + <itemgra item_types="poi_social_service" order="0-"> + <icon src="social_service.svg"/> + </itemgra> + <itemgra item_types="poi_sounding" order="0-"> + <icon src="sounding.svg"/> + </itemgra> + <itemgra item_types="poi_sport" order="12-"> + <icon src="sport.svg"/> + </itemgra> + <itemgra item_types="poi_stadium" order="0-"> + <icon src="stadium.svg"/> + </itemgra> + <itemgra item_types="poi_swimming" order="12-"> + <icon src="swimming.svg"/> + </itemgra> + <itemgra item_types="poi_taxi" order="13-"> + <icon src="taxi.svg"/> + </itemgra> + <itemgra item_types="poi_telephone" order="13-"> + <icon src="telephone.svg"/> + </itemgra> + <itemgra item_types="poi_theater" order="12-"> + <icon src="theater.svg"/> + </itemgra> + <itemgra item_types="poi_tide" order="0-"> + <icon src="tide.svg"/> + </itemgra> + <itemgra item_types="poi_tower" order="13-"> + <icon src="tower.svg"/> + </itemgra> + <itemgra item_types="poi_townhall" order="12-"> + <icon src="townhall.svg"/> + </itemgra> + <itemgra item_types="poi_trail" order="0-"> + <icon src="trail.svg"/> + </itemgra> + <itemgra item_types="poi_truck_stop" order="0-"> + <icon src="truck_stop.svg"/> + </itemgra> + <itemgra item_types="poi_tunnel" order="0-"> + <icon src="tunnel.svg"/> + </itemgra> + <itemgra item_types="poi_wifi" order="11-"> + <icon src="wifi.svg"/> + </itemgra> + <itemgra item_types="poi_wine" order="0-"> + <icon src="wine.svg"/> + </itemgra> + <itemgra item_types="poi_worship" order="0-"> + <icon src="worship.svg"/> + </itemgra> + <itemgra item_types="poi_wrecker" order="0-"> + <icon src="wrecker.svg"/> + </itemgra> + <itemgra item_types="poi_zoo" order="10-"> + <icon src="zoo.svg"/> + </itemgra> + <itemgra item_types="poi_picnic" order="11-"> + <icon src="picnic.svg"/> + </itemgra> + <itemgra item_types="poi_gc_multi" order="0-"> + <icon src="gc_multi.svg"/> + </itemgra> + <itemgra item_types="poi_gc_tradi" order="0-"> + <icon src="gc_tradi.svg"/> + </itemgra> + <itemgra item_types="poi_gc_event" order="0-"> + <icon src="gc_event.svg"/> + </itemgra> + <itemgra item_types="poi_gc_mystery" order="0-"> + <icon src="gc_mystery.svg"/> + </itemgra> + <itemgra item_types="poi_gc_question" order="0-"> + <icon src="gc_question.svg"/> + </itemgra> + <itemgra item_types="poi_gc_stages" order="0-"> + <icon src="gc_stages.svg"/> + </itemgra> + <itemgra item_types="poi_gc_reference" order="0-"> + <icon src="gc_reference.svg"/> + </itemgra> + <itemgra item_types="poi_gc_webcam" order="0-"> + <icon src="gc_webcam.svg"/> + </itemgra> + <itemgra item_types="traffic_signals" order="13-"> + <icon src="traffic_signals.svg"/> + </itemgra> + <itemgra item_types="poi_image" order="0-"> + <image/> + </itemgra> + <!-- I'm not sure if the following stuff should appear in any layout. Maybe portions should only apply to the bike layout? --> + <itemgra item_types="poi_bench" order="15-"> + <icon src="bench.svg"/> + </itemgra> + <itemgra item_types="poi_biergarten" order="12-"> + <icon src="beer.svg"/> + </itemgra> + <itemgra item_types="poi_boundary_stone" order="13-"> + <icon src="boundary_stone.svg"/> + </itemgra> + <itemgra item_types="poi_castle" order="12-"> + <icon src="castle.svg"/> + </itemgra> + <itemgra item_types="poi_hunting_stand" order="13-"> + <icon src="hunting_stand.svg"/> + </itemgra> + <itemgra item_types="poi_memorial" order="12-"> + <icon src="memorial.svg"/> + </itemgra> + <itemgra item_types="poi_monument" order="12-"> + <icon src="memorial.svg"/> + </itemgra> + <itemgra item_types="poi_shelter" order="10-"> + <icon src="shelter.svg"/> + </itemgra> + <itemgra item_types="poi_fountain" order="12-"> + <icon src="fountain.svg"/> + </itemgra> + <itemgra item_types="poi_potable_water" order="12-"> + <icon src="drinking_water.svg"/> + </itemgra> + <itemgra item_types="poi_toilets" order="12-"> + <icon src="toilets.svg"/> + </itemgra> + <itemgra item_types="poi_viewpoint" order="12-"> + <icon src="viewpoint.svg"/> + </itemgra> + <itemgra item_types="tec_common" order="11-"> + <icon src="tec_common.svg"/> + </itemgra> + <itemgra item_types="vehicle" order="0-"> + <icon src="gui_vehicle_16_16.svg" /> + </itemgra> + <itemgra item_types="vehicle_pedestrian" order="0-"> + <icon src="gui_vehicle_pedestrian_16_16.svg" /> + </itemgra> + </layer> + <layer name="POI Labels"> + <itemgra item_types="poi_airport,town_ghost,poi_hotel,poi_car_parking,poi_car_dealer_parts,poi_fuel,poi_shopping,poi_attraction,poi_cafe,poi_bar,poi_pub,highway_exit,poi_camp_rv,poi_museum_history,poi_hospital,poi_dining,poi_fastfood,poi_police,poi_autoservice,poi_bank,poi_atm,poi_bus_station,poi_bus_stop,poi_business_service,poi_car_rent,poi_car_sharing,poi_church,poi_bahai,poi_buddhist,poi_hindu,poi_islamic,poi_jain,poi_jewish,poi_pagan,poi_pastafarian,poi_shinto,poi_sikh,poi_taoist,poi_cinema,poi_concert,poi_drinking_water,poi_emergency,poi_fair,poi_fish,poi_government_building,poi_hotspring,poi_information,poi_justice,poi_landmark,poi_library,poi_mall,poi_manmade_feature,poi_marine,poi_marine_type,poi_mark,poi_oil_field,poi_peak,poi_personal_service,poi_pharmacy,poi_post_office,poi_public_office,poi_rail_halt,poi_rail_station,poi_rail_tram_stop,poi_repair_service,poi_resort,poi_restaurant,poi_restricted_area,poi_sailing,poi_scenic_area,poi_school,poi_service,poi_shop_retail,poi_skiing,poi_social_service,poi_sport,poi_stadium,poi_swimming,poi_theater,poi_townhall,poi_trail,poi_truck_stop,poi_tunnel,poi_worship,poi_wrecker,poi_zoo,poi_biergarten,poi_castle,poi_ruins,poi_memorial,poi_monument,poi_shelter,poi_fountain,poi_viewpoint,vehicle" order="14-"> + <circle color="#606060" background_color="#000000" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + + <layout name="Car-Android" color="#fef9ee" font="Liberation Sans"> + <cursor w="49" h="49"> + <itemgra speed_range="-2"> + <polyline color="#00BC00" radius="0" width="4"> + <coord x="0" y="0" /> + </polyline> + <circle color="#008500" radius="9" width="3"> + <coord x="0" y="0" /> + </circle> + <circle color="#00BC00" radius="13" width="3"> + <coord x="0" y="0" /> + </circle> + <circle color="#008500" radius="18" width="3"> + <coord x="0" y="0" /> + </circle> + </itemgra> + <itemgra speed_range="3-"> + <polygon color="#00000066"> + <coord x="-21" y="-27" /> + <coord x="0" y="12" /> + <coord x="21" y="-27" /> + <coord x="0" y="-12" /> + <coord x="-21" y="-27" /> + </polygon> + <polygon color="#008500"> + <coord x="-21" y="-18" /> + <coord x="0" y="21" /> + <coord x="0" y="-3" /> + <coord x="-21" y="-18" /> + </polygon> + <polygon color="#00BC00"> + <coord x="21" y="-18" /> + <coord x="0" y="21" /> + <coord x="0" y="-3" /> + <coord x="21" y="-18" /> + </polygon> + <polyline color="#008500" width="1"> + <coord x="-21" y="-18" /> + <coord x="0" y="21" /> + <coord x="0" y="-3" /> + <coord x="-21" y="-18" /> + </polyline> + <polyline color="#008500" width="1"> + <coord x="21" y="-18" /> + <coord x="0" y="21" /> + <coord x="0" y="-3" /> + <coord x="21" y="-18" /> + </polyline> + </itemgra> + </cursor> + <layer name="polygons"> + <itemgra item_types="poly_wood" order="8-"> + <polygon color="#8ec78d" /> + <text text_size="5" /> + </itemgra> + <itemgra item_types="poly_water_tiled"> + <polygon color="#82c8ea" /> + </itemgra> + <itemgra item_types="poly_water" order="10-"> + <polygon color="#82c8ea" /> + <polyline color="#5096b8" /> + <text text_size="5" /> + </itemgra> + <itemgra item_types="poly_flats,poly_scrub,poly_military_zone,poly_marine,plantation,tundra" + order="14-"> + <polygon color="#a0a0a0" /> + <text text_size="5" /> + </itemgra> + <itemgra item_types="poly_park" order="14-"> + <polygon color="#7cc334" /> + <text text_size="5" /> + </itemgra> + <itemgra item_types="poly_pedestrian" order="14"> + <polyline color="#d2d2d2" width="13" /> + <polyline color="#dddddd" width="9" /> + <polygon color="#dddddd" /> + </itemgra> + <itemgra item_types="poly_pedestrian" order="15"> + <polyline color="#d2d2d2" width="18" /> + <polyline color="#dddddd" width="14" /> + <polygon color="#dddddd" /> + </itemgra> + <itemgra item_types="poly_pedestrian" order="16"> + <polyline color="#d2d2d2" width="21" /> + <polyline color="#dddddd" width="17" /> + <polygon color="#dddddd" /> + </itemgra> + <itemgra item_types="poly_pedestrian" order="17"> + <polyline color="#d2d2d2" width="25" /> + <polyline color="#dddddd" width="21" /> + <polygon color="#dddddd" /> + </itemgra> + <itemgra item_types="poly_pedestrian" order="18"> + <polyline color="#d2d2d2" width="40" /> + <polyline color="#dddddd" width="34" /> + <polygon color="#dddddd" /> + </itemgra> + <itemgra item_types="poly_airport" order="5-"> + <polygon color="#a0a0a0" /> + </itemgra> + <itemgra item_types="water_river" order="6-7"> + <polyline color="#82c8ea" width="3" /> + </itemgra> + <itemgra item_types="water_river" order="8-9"> + <polyline color="#82c8ea" width="4" /> + </itemgra> + <itemgra item_types="water_river" order="10-"> + <polyline color="#82c8ea" width="4" /> + <text text_size="10" /> + </itemgra> + <itemgra item_types="water_canal" order="13-"> + <polyline color="#82c8ea" width="3" /> + <text text_size="10" /> + </itemgra> + <itemgra item_types="water_stream" order="13-"> + <polyline color="#82c8ea" width="2" /> + <text text_size="7" /> + </itemgra> + <itemgra item_types="water_drain" order="14-"> + <polyline color="#82c8ea" width="1" /> + <text text_size="5" /> + </itemgra> + <itemgra item_types="poly_apron" order="13-"> + <polygon color="#d0d0d0" /> + </itemgra> + <itemgra item_types="poly_terminal" order="14-"> + <polygon color="#e3c6a6" /> + </itemgra> + <itemgra item_types="poly_car_parking" order="15-"> + <polygon color="#e7cf87" /> + </itemgra> + <itemgra item_types="poly_building" order="14-"> + <polygon color="#b6a6a6" /> + </itemgra> + <itemgra item_types="rail" order="13-"> + <polyline color="#696969" width="3" /> + <polyline color="#ffffff" width="1" dash="5,5" /> + </itemgra> + <itemgra item_types="ferry" order="14-"> + <polyline color="#000000" width="1" dash="10" /> + </itemgra> + <itemgra item_types="border_country" order="0-"> + <polyline color="#808080" width="1" dash="10,5,2,5"/> + </itemgra> + <itemgra item_types="border_state" order="0-"> + <polyline color="#808080" width="4"/> + </itemgra> + </layer> + <layer name="streets"> + <itemgra item_types="street_route" order="2"> + <polyline color="#69e068" width="8" /> + </itemgra> + <itemgra item_types="street_route" order="3-5"> + <polyline color="#69e068" width="10" /> + </itemgra> + <itemgra item_types="street_route" order="6"> + <polyline color="#69e068" width="12" /> + </itemgra> + <itemgra item_types="street_route" order="7-8"> + <polyline color="#69e068" width="16" /> + </itemgra> + <itemgra item_types="street_route" order="9-10"> + <polyline color="#69e068" width="20" /> + </itemgra> + <itemgra item_types="street_route" order="11"> + <polyline color="#69e068" width="28" /> + </itemgra> + <itemgra item_types="street_route" order="12"> + <polyline color="#69e068" width="32" /> + </itemgra> + <itemgra item_types="street_route" order="13"> + <polyline color="#69e068" width="52" /> + </itemgra> + <itemgra item_types="street_route" order="14"> + <polyline color="#69e068" width="64" /> + </itemgra> + <itemgra item_types="street_route" order="15"> + <polyline color="#69e068" width="68" /> + </itemgra> + <itemgra item_types="street_route" order="16"> + <polyline color="#69e068" width="132" /> + </itemgra> + <itemgra item_types="street_route" order="17"> + <polyline color="#69e068" width="268" /> + </itemgra> + <itemgra item_types="street_route" order="18"> + <polyline color="#69e068" width="530" /> + </itemgra> + <itemgra item_types="selected_line" order="2"> + <polyline color="#ba00b8" width="4" /> + </itemgra> + <itemgra item_types="selected_line" order="3-5"> + <polyline color="#ba00b8" width="8" /> + </itemgra> + <itemgra item_types="selected_line" order="6"> + <polyline color="#ba00b8" width="10" /> + </itemgra> + <itemgra item_types="selected_line" order="7-8"> + <polyline color="#ba00b8" width="16" /> + </itemgra> + <itemgra item_types="selected_line" order="9-10"> + <polyline color="#ba00b8" width="20" /> + </itemgra> + <itemgra item_types="selected_line" order="11"> + <polyline color="#ba00b8" width="28" /> + </itemgra> + <itemgra item_types="selected_line" order="12"> + <polyline color="#ba00b8" width="32" /> + </itemgra> + <itemgra item_types="selected_line" order="13"> + <polyline color="#ba00b8" width="52" /> + </itemgra> + <itemgra item_types="selected_line" order="14"> + <polyline color="#ba00b8" width="64" /> + </itemgra> + <itemgra item_types="selected_line" order="15"> + <polyline color="#ba00b8" width="68" /> + </itemgra> + <itemgra item_types="selected_line" order="16"> + <polyline color="#ba00b8" width="132" /> + </itemgra> + <itemgra item_types="selected_line" order="17"> + <polyline color="#ba00b8" width="268" /> + </itemgra> + <itemgra item_types="selected_line" order="18"> + <polyline color="#ba00b8" width="530" /> + </itemgra> + <itemgra item_types="forest_way_1" order="14-"> + <polyline color="#0070c0" width="6" /> + </itemgra> + <itemgra item_types="forest_way_2" order="14-"> + <polyline color="#ff0000" width="3" /> + </itemgra> + <itemgra item_types="forest_way_3" order="14-"> + <polyline color="#ff0000" width="1" dash="2,4" /> + </itemgra> + <itemgra item_types="forest_way_4" order="14-"> + <polyline color="#119a2e" width="1" dash="4,10" /> + </itemgra> + <itemgra item_types="street_nopass" order="14-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="track_paved" order="14-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="track_gravelled" order="14"> + <polyline color="#ffffff" width="4"/> + <polyline color="#800000" width="1" dash="4,8" /> + </itemgra> + <itemgra item_types="track_gravelled" order="15-16"> + <polyline color="#ffffff" width="5"/> + <polyline color="#800000" width="1" dash="5,10" /> + </itemgra> + <itemgra item_types="track_gravelled" order="17-"> + <polyline color="#ffffff" width="7"/> + <polyline color="#800000" width="1" dash="7,15" /> + </itemgra> + <itemgra item_types="track_unpaved" order="14-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="bridleway" order="14-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="cycleway" order="14-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="lift_cable_car" order="15-"> + <polyline color="#696969" width="1" dash="5" /> + </itemgra> + <itemgra item_types="lift_chair" order="15-"> + <polyline color="#696969" width="1" dash="5" /> + </itemgra> + <itemgra item_types="lift_drag" order="15-"> + <polyline color="#696969" width="1" dash="5" /> + </itemgra> + <itemgra item_types="footway" order="15-16"> + <polyline color="#ffffff" width="5"/> + <polyline color="#ff0000" width="1" dash="5,10" /> + </itemgra> + <itemgra item_types="footway" order="17-"> + <polyline color="#ffffff" width="7"/> + <polyline color="#ff0000" width="1" dash="7,15" /> + </itemgra> + <itemgra item_types="steps" order="15-"> + <polyline color="#000000" width="1" /> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" + order="14"> + <polyline color="#d2d2d2" width="13" /> + <polyline color="#dddddd" width="9" /> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" + order="15"> + <polyline color="#d2d2d2" width="18" /> + <polyline color="#dddddd" width="14" /> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" + order="16"> + <polyline color="#d2d2d2" width="21" /> + <polyline color="#dddddd" width="17" /> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" + order="17"> + <polyline color="#d2d2d2" width="25" /> + <polyline color="#dddddd" width="21" /> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" + order="18"> + <polyline color="#d2d2d2" width="40" /> + <polyline color="#dddddd" width="34" /> + </itemgra> + <itemgra item_types="street_service" order="14"> + <polyline color="#d2d2d2" width="7" /> + <polyline color="#fefefe" width="5" /> + </itemgra> + <itemgra item_types="street_service" order="15"> + <polyline color="#d2d2d2" width="8" /> + <polyline color="#fefefe" width="6" /> + </itemgra> + <itemgra item_types="street_service" order="16"> + <polyline color="#d2d2d2" width="9" /> + <polyline color="#fefefe" width="7" /> + </itemgra> + <itemgra item_types="street_service" order="17"> + <polyline color="#d2d2d2" width="10" /> + <polyline color="#fefefe" width="8" /> + </itemgra> + <itemgra item_types="street_service" order="18"> + <polyline color="#d2d2d2" width="11" /> + <polyline color="#fefefe" width="9" /> + </itemgra> + <itemgra item_types="street_parking_lane" order="15"> + <polyline color="#d2d2d2" width="6" /> + <polyline color="#fefefe" width="4" /> + </itemgra> + <itemgra item_types="street_parking_lane" order="16"> + <polyline color="#d2d2d2" width="7" /> + <polyline color="#fefefe" width="5" /> + </itemgra> + <itemgra item_types="street_parking_lane" order="17"> + <polyline color="#d2d2d2" width="8" /> + <polyline color="#fefefe" width="6" /> + </itemgra> + <itemgra item_types="street_parking_lane" order="18"> + <polyline color="#d2d2d2" width="9" /> + <polyline color="#fefefe" width="7" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="12"> + <polyline color="#d2d2d2" width="1" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="13-14"> + <polyline color="#d2d2d2" width="17" /> + <polyline color="#ffffff" width="13" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="15"> + <polyline color="#d2d2d2" width="18" /> + <polyline color="#ffffff" width="14" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="16"> + <polyline color="#d2d2d2" width="30" /> + <polyline color="#ffffff" width="26" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="17"> + <polyline color="#d2d2d2" width="67" /> + <polyline color="#ffffff" width="61" /> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" + order="18"> + <polyline color="#d2d2d2" width="132" /> + <polyline color="#ffffff" width="126" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="11-12"> + <polyline color="#c0c0c0" width="9" /> + <polyline color="#fefc8c" width="7" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="13-14"> + <polyline color="#c0c0c0" width="13" /> + <polyline color="#fefc8c" width="11" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="15"> + <polyline color="#c0c0c0" width="19" /> + <polyline color="#fefc8c" width="15" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="16"> + <polyline color="#c0c0c0" width="30" /> + <polyline color="#fefc8c" width="26" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="17"> + <polyline color="#c0c0c0" width="63" /> + <polyline color="#fefc8c" width="57" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" + order="18"> + <polyline color="#c0c0c0" width="100" /> + <polyline color="#fefc8c" width="90" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="11-12"> + <polyline color="#a0a0a0" width="9" /> + <polyline color="#fefc8c" width="7" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="13-14"> + <polyline color="#a0a0a0" width="21" /> + <polyline color="#fefc8c" width="17" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="15"> + <polyline color="#a0a0a0" width="25" /> + <polyline color="#fefc8c" width="21" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="16"> + <polyline color="#a0a0a0" width="40" /> + <polyline color="#fefc8c" width="34" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="17"> + <polyline color="#a0a0a0" width="79" /> + <polyline color="#fefc8c" width="73" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" + order="18"> + <polyline color="#a0a0a0" width="156" /> + <polyline color="#fefc8c" width="150" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="2-6"> + <polyline color="#f8dc79" width="4" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="7-8"> + <polyline color="#f8dc79" width="4" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="9"> + <polyline color="#f8dc79" width="5" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="10"> + <polyline color="#f8dc79" width="6" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="11"> + <polyline color="#000000" width="9" /> + <polyline color="#f8dc79" width="7" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="12"> + <polyline color="#000000" width="13" /> + <polyline color="#f8dc79" width="9" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="13"> + <polyline color="#000000" width="18" /> + <polyline color="#f8dc79" width="14" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="14"> + <polyline color="#000000" width="21" /> + <polyline color="#f8dc79" width="17" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="15"> + <polyline color="#000000" width="24" /> + <polyline color="#f8dc79" width="20" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="16"> + <polyline color="#000000" width="39" /> + <polyline color="#f8dc79" width="33" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="17"> + <polyline color="#000000" width="78" /> + <polyline color="#f8dc79" width="72" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" + order="18"> + <polyline color="#000000" width="156" /> + <polyline color="#f8dc79" width="150" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" + order="0-1"> + <polyline color="#fc843b" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="2"> + <polyline color="#fc843b" width="3" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" + order="3-5"> + <polyline color="#fc843b" width="6" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="6"> + <polyline color="#fc843b" width="6" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" + order="7-8"> + <polyline color="#fc843b" width="6" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="9"> + <polyline color="#fc843b" width="7" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="10"> + <polyline color="#fc843b" width="9" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="11"> + <polyline color="#a8aab3" width="13" /> + <polyline color="#fc843b" width="9" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="12"> + <polyline color="#a8aab3" width="15" /> + <polyline color="#fc843b" width="10" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="13"> + <polyline color="#a8aab3" width="25" /> + <polyline color="#fc843b" width="17" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="14"> + <polyline color="#a8aab3" width="31" /> + <polyline color="#fc843b" width="24" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="15"> + <polyline color="#a8aab3" width="33" /> + <polyline color="#fc843b" width="27" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="16"> + <polyline color="#a8aab3" width="65" /> + <polyline color="#fc843b" width="59" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="17"> + <polyline color="#a8aab3" width="133" /> + <polyline color="#fc843b" width="127" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="18"> + <polyline color="#a8aab3" width="264" /> + <polyline color="#fc843b" width="258" /> + <polyline color="#a8aab3" width="1" /> + </itemgra> + <itemgra item_types="highway_exit_label" order="13-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="highway_city,highway_land,street_4_city,street_4_land,street_n_lanes,living_street" + order="13-18"> + <text text_size="8" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,street_3_city,street_3_land,ramp" + order="13-18"> + <text text_size="9" /> + </itemgra> + <itemgra item_types="street_nopass,street_0,street_1_city,street_1_land,footway" + order="13-18"> + <text text_size="9" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="7-8"> + <polyline color="#ff9000" width="8" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="9-10"> + <polyline color="#ff9000" width="10" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="11"> + <polyline color="#ff9000" width="14" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="12"> + <polyline color="#ff9000" width="16" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="13"> + <polyline color="#ff9000" width="26" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="14"> + <polyline color="#ff9000" width="32" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="15"> + <polyline color="#ff9000" width="34" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="16"> + <polyline color="#ff9000" width="66" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="17"> + <polyline color="#ff9000" width="134" /> + </itemgra> + <itemgra item_types="traffic_distortion" order="18"> + <polyline color="#ff9000" width="265" /> + </itemgra> + </layer> + <layer name="polylines"> + <itemgra item_types="rail_tram" order="13-"> + <polyline color="#606060" width="2" /> + </itemgra> + </layer> + <layer name="labels"> + <itemgra item_types="house_number" order="15-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" + order="13-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="district_label_1e3,district_label_2e3,district_label_5e3" + order="12-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="town_label_1e3,place_label" + order="10-"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="district_label_1e4,district_label_2e4,district_label_5e4" + order="11-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="town_label_2e3" order="11-"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="town_label_5e3,town_label_1e4,town_label_2e4,town_label_5e4" + order="11-"> + <circle color="#000000" radius="3" text_size="15" /> + </itemgra> + <itemgra item_types="district_label_1e5,district_label_2e5,district_label_5e5" + order="10-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="town_label_2e3" order="10"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="district_label_1e6,district_label_2e6,district_label_5e6,district_label_1e7" + order="9-"> + <circle color="#000000" radius="3" text_size="7" /> + </itemgra> + <itemgra item_types="town_label_5e3" order="9-10"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="town_label_1e4" order="8-9"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="town_label_2e4,town_label_5e4" + order="7-8"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" + order="5-"> + <circle color="#000000" radius="3" text_size="15" /> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" + order="5-"> + <circle color="#000000" radius="3" text_size="20" /> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" + order="4"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" + order="4"> + <circle color="#000000" radius="3" text_size="15" /> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7" + order="0-3"> + <circle color="#000000" radius="3" text_size="10" /> + </itemgra> + </layer> + <layer name="Internal"> + <itemgra item_types="track" order="7-"> + <polyline color="#3f3f3f" width="1" /> + </itemgra> + <itemgra item_types="track_tracked" order="7-"> + <polyline color="#3f3fff" width="3" /> + </itemgra> + <itemgra item_types="rg_segment" order="12-"> + <polyline color="#FF089C" width="1" /> + <arrows color="#FF089C" width="1" /> + </itemgra> + <itemgra item_types="rg_point" order="12-"> + <circle color="#FF089C" radius="10" text_size="7" /> + </itemgra> + <itemgra item_types="nav_left_1" order="0-"> + <icon src="nav_left_1_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_left_2" order="0-"> + <icon src="nav_left_2_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_left_3" order="0-"> + <icon src="nav_left_3_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_right_1" order="0-"> + <icon src="nav_right_1_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_right_2" order="0-"> + <icon src="nav_right_2_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_right_3" order="0-"> + <icon src="nav_right_3_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_straight" order="0-"> + <icon src="nav_straight_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_turnaround_left" order="0-"> + <icon src="nav_turnaround_left_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_turnaround_right" order="0-"> + <icon src="nav_turnaround_right_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l1" order="0-"> + <icon src="nav_roundabout_l1_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r1" order="0-"> + <icon src="nav_roundabout_r1_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l2" order="0-"> + <icon src="nav_roundabout_l2_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r2" order="0-"> + <icon src="nav_roundabout_r2_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l3" order="0-"> + <icon src="nav_roundabout_l3_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r3" order="0-"> + <icon src="nav_roundabout_r3_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l4" order="0-"> + <icon src="nav_roundabout_l4_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r4" order="0-"> + <icon src="nav_roundabout_r4_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l5" order="0-"> + <icon src="nav_roundabout_l5_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r5" order="0-"> + <icon src="nav_roundabout_r5_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l6" order="0-"> + <icon src="nav_roundabout_l6_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r6" order="0-"> + <icon src="nav_roundabout_r6_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l7" order="0-"> + <icon src="nav_roundabout_l7_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r7" order="0-"> + <icon src="nav_roundabout_r7_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_l8" order="0-"> + <icon src="nav_roundabout_l8_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_roundabout_r8" order="0-"> + <icon src="nav_roundabout_r8_bk.svg" w="32" h="32" /> + </itemgra> + <itemgra item_types="nav_keep_left" order="0-"> + <icon src="nav_keep_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_left" order="0-"> + <icon src="nav_merge_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_right" order="0-"> + <icon src="nav_keep_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_right" order="0-"> + <icon src="nav_merge_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_left" order="0-"> + <icon src="nav_exit_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_right" order="0-"> + <icon src="nav_exit_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="route_end" order="0-"> + <icon src="nav_destination_bk.svg" w="32" h="32" x="4" y="30"/> + </itemgra> + + <itemgra item_types="waypoint,route_end" order="2"> + <circle color="#000000" radius="4" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="3-5"> + <circle color="#000000" radius="8" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="6"> + <circle color="#000000" radius="10" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="7-8"> + <circle color="#000000" radius="16" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="9-10"> + <circle color="#000000" radius="20" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="11"> + <circle color="#000000" radius="28" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="12"> + <circle color="#000000" radius="32" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="13"> + <circle color="#000000" radius="52" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="14"> + <circle color="#000000" radius="64" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="15"> + <circle color="#000000" radius="68" width="6" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="16"> + <circle color="#000000" radius="132" width="8" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="17"> + <circle color="#000000" radius="268" width="8" text_size="48"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="18"> + <circle color="#000000" radius="530" width="8" text_size="48"/> + </itemgra> + + <itemgra item_types="nav_none" order="0-"> + <icon src="unknown.svg" /> + </itemgra> + <itemgra item_types="announcement" order="7-"> + <icon src="gui_sound_32_32.svg" /> + <circle color="#FF089C" radius="10" text_size="7" /> + </itemgra> + </layer> + <layer name="POI Symbols" active="1"> + <itemgra item_types="mini_roundabout" order="12-"> + <icon src="mini_roundabout.svg" /> + </itemgra> + <itemgra item_types="turning_circle" order="12-"> + <icon src="mini_roundabout.svg" /> + </itemgra> + <itemgra item_types="poi_airport" order="6-"> + <icon src="airport.svg" /> + </itemgra> + <itemgra item_types="poi_fuel" order="12-"> + <icon src="fuel.svg" /> + </itemgra> + <itemgra item_types="poi_bridge" order="12-"> + <icon src="bridge.svg" /> + </itemgra> + <itemgra item_types="highway_exit" order="12-"> + <icon src="exit.svg" /> + </itemgra> + <itemgra item_types="poi_auto_club" order="13-"> + <icon src="auto_club.svg" /> + </itemgra> + <itemgra item_types="poi_bank" order="13-"> + <icon src="bank.svg" /> + </itemgra> + <itemgra item_types="poi_atm" order="13-"> + <icon src="atm.svg"/> + </itemgra> + <itemgra item_types="poi_danger_area" order="13-"> + <icon src="danger_16_16.svg" /> + </itemgra> + <itemgra item_types="poi_forbidden_area" order="13-"> + <icon src="forbiden_area.svg" /> + </itemgra> + <itemgra item_types="poi_tunnel" order="12-"> + <icon src="tunnel.svg" /> + </itemgra> + <itemgra item_types="traffic_signals" order="14-"> + <icon src="traffic_signals.svg" /> + </itemgra> + </layer> + <layer name="POI Labels" active="1"> + <itemgra item_types="poi_airport,town_ghost,poi_hotel,poi_car_parking,poi_car_dealer_parts,poi_fuel,poi_shopping,poi_attraction,poi_cafe,poi_bar,poi_pub,highway_exit,poi_camp_rv,poi_museum_history,poi_hospital,poi_dining,poi_fastfood,poi_police,poi_autoservice,poi_bank,poi_atm,poi_bus_station,poi_bus_stop,poi_business_service,poi_car_rent,poi_church,poi_bahai,poi_buddhist,poi_hindu,poi_islamic,poi_jain,poi_jewish,poi_pagan,poi_pastafarian,poi_shinto,poi_sikh,poi_taoist,poi_cinema,poi_concert,poi_drinking_water,poi_emergency,poi_fair,poi_fish,poi_government_building,poi_hotspring,poi_information,poi_justice,poi_landmark,poi_library,poi_mall,poi_manmade_feature,poi_marine,poi_marine_type,poi_mark,poi_oil_field,poi_peak,poi_personal_service,poi_pharmacy,poi_post_office,poi_public_office,poi_rail_halt,poi_rail_station,poi_rail_tram_stop,poi_repair_service,poi_resort,poi_restaurant,poi_restricted_area,poi_sailing,poi_scenic_area,poi_school,poi_service,poi_shop_retail,poi_skiing,poi_social_service,poi_sport,poi_stadium,poi_swimming,poi_theater,poi_townhall,poi_trail,poi_truck_stop,poi_tunnel,poi_worship,poi_wrecker,poi_zoo,poi_biergarten,poi_castle,poi_ruins,poi_memorial,poi_monument,poi_shelter,poi_fountain,poi_viewpoint,vehicle" + order="15-"> + <circle color="#606060" radius="0" width="0" + text_size="10" /> + </itemgra> + </layer> + <layer name="Android-POI-Icons-full" active="0"> + <itemgra item_types="mini_roundabout" order="12-"> + <icon src="mini_roundabout.svg" /> + </itemgra> + <itemgra item_types="turning_circle" order="12-"> + <icon src="mini_roundabout.svg" /> + </itemgra> + <itemgra item_types="poi_airport" order="5-"> + <icon src="airport.svg" /> + </itemgra> + <itemgra item_types="town_ghost" order="10-"> + <icon src="ghost_town.svg" /> + </itemgra> + <itemgra item_types="poi_hotel" order="12-"> + <icon src="hotel.svg" /> + </itemgra> + <itemgra item_types="poi_car_parking" order="11-"> + <icon src="parking.svg" /> + </itemgra> + <itemgra item_types="poi_car_dealer_parts" order="12-"> + <icon src="car_dealer.svg" /> + </itemgra> + <itemgra item_types="poi_fuel" order="12-"> + <icon src="fuel.svg" /> + </itemgra> + <itemgra item_types="poi_shopping" order="14-"> + <icon src="shopping.svg" /> + </itemgra> + <itemgra item_types="poi_attraction" order="11-"> + <icon src="attraction.svg" /> + </itemgra> + <itemgra item_types="poi_cafe" order="12-"> + <icon src="cafe.svg" /> + </itemgra> + <itemgra item_types="poi_bar" order="12-"> + <icon src="bar.svg" /> + </itemgra> + <itemgra item_types="poi_pub" order="12-"> + <icon src="beer.svg" /> + </itemgra> + <itemgra item_types="poi_bridge" order="12-"> + <icon src="bridge.svg" /> + </itemgra> + <itemgra item_types="highway_exit" order="11-"> + <icon src="exit.svg" /> + </itemgra> + <itemgra item_types="poi_camp_rv" order="12-"> + <icon src="camping.svg" /> + </itemgra> + <itemgra item_types="poi_museum_history" order="12-"> + <icon src="museum.svg" /> + </itemgra> + <itemgra item_types="poi_hospital" order="12-"> + <icon src="hospital.svg" /> + </itemgra> + <itemgra item_types="poi_dining" order="12-"> + <icon src="restaurant.svg"/> + </itemgra> + <itemgra item_types="poi_fastfood" order="12-"> + <icon src="fastfood.svg" /> + </itemgra> + <itemgra item_types="poi_police" order="12-"> + <icon src="police.svg" /> + </itemgra> + <itemgra item_types="poi_auto_club" order="12-"> + <icon src="auto_club.svg" /> + </itemgra> + <itemgra item_types="poi_autoservice" order="12-"> + <icon src="car_dealer.svg" /> + </itemgra> + <itemgra item_types="poi_bank" order="12-"> + <icon src="bank.svg" /> + </itemgra> + <itemgra item_types="poi_atm" order="12-"> + <icon src="atm.svg"/> + </itemgra> + <itemgra item_types="poi_bay" order="12-"> + <icon src="bay.svg" /> + </itemgra> + <itemgra item_types="poi_bend" order="12-"> + <icon src="bend.svg" /> + </itemgra> + <itemgra item_types="poi_boat_ramp" order="12-"> + <icon src="boat_ramp.svg" /> + </itemgra> + <itemgra item_types="poi_border_station" order="12-"> + <icon src="border_station.svg" /> + </itemgra> + <itemgra item_types="poi_bowling" order="12-"> + <icon src="bowling.svg" /> + </itemgra> + <itemgra item_types="poi_bus_station" order="11-"> + <icon src="bus.svg" /> + </itemgra> + <itemgra item_types="poi_bus_stop" order="12-"> + <icon src="bus_stop.svg" /> + </itemgra> + <itemgra item_types="poi_business_service" order="12-"> + <icon src="bussines_service.svg" /> + </itemgra> + <itemgra item_types="poi_car_rent" order="12-"> + <icon src="car_rent.svg" /> + </itemgra> + <itemgra item_types="poi_car_sharing" order="11-"> + <icon src="car_sharing.svg"/> + </itemgra> + <itemgra item_types="poi_car_wash" order="12-"> + <icon src="car_wash.svg" /> + </itemgra> + <itemgra item_types="poi_casino" order="12-"> + <icon src="casino.svg" /> + </itemgra> + <itemgra item_types="poi_cemetery" order="12-"> + <icon src="cemetery.svg" /> + </itemgra> + <itemgra item_types="poi_church" order="11-"> + <icon src="church.svg" /> + </itemgra> + <itemgra item_types="poi_bahai" order="11-"> + <icon src="bahai.svg"/> + </itemgra> + <itemgra item_types="poi_buddhist" order="11-"> + <icon src="buddhist.svg"/> + </itemgra> + <itemgra item_types="poi_hindu" order="11-"> + <icon src="hindu.svg"/> + </itemgra> + <itemgra item_types="poi_islamic" order="11-"> + <icon src="islamic.svg"/> + </itemgra> + <itemgra item_types="poi_jain" order="11-"> + <icon src="jain.svg"/> + </itemgra> + <itemgra item_types="poi_jewish" order="11-"> + <icon src="jewish.svg"/> + </itemgra> + <itemgra item_types="poi_pagan" order="11-"> + <icon src="pagan.svg"/> + </itemgra> + <itemgra item_types="poi_pastafarian" order="11-"> + <icon src="pastafarian.svg"/> + </itemgra> + <itemgra item_types="poi_shinto" order="11-"> + <icon src="shinto.svg"/> + </itemgra> + <itemgra item_types="poi_sikh" order="11-"> + <icon src="sikh.svg"/> + </itemgra> + <itemgra item_types="poi_taoist" order="11-"> + <icon src="taoist.svg"/> + </itemgra> + <itemgra item_types="poi_cinema" order="12-"> + <icon src="cinema.svg" /> + </itemgra> + <itemgra item_types="poi_communication" order="12-"> + <icon src="communication.svg" /> + </itemgra> + <itemgra item_types="poi_concert" order="12-"> + <icon src="concert.svg" /> + </itemgra> + <itemgra item_types="poi_cove" order="12-"> + <icon src="cove.svg" /> + </itemgra> + <itemgra item_types="poi_crossing" order="12-"> + <icon src="crossing.svg" /> + </itemgra> + <itemgra item_types="poi_dam" order="12-"> + <icon src="dam.svg" /> + </itemgra> + <itemgra item_types="poi_danger_area" order="12-"> + <icon src="danger_16_16.svg" /> + </itemgra> + <itemgra item_types="poi_danger_sea_wreck" order="12-"> + <icon src="dangerous.svg" /> + </itemgra> + <itemgra item_types="poi_daymark" order="12-"> + <icon src="daymark.svg" /> + </itemgra> + <itemgra item_types="poi_diving" order="12-"> + <icon src="diving.svg" /> + </itemgra> + <itemgra item_types="poi_drinking_water" order="13-"> + <icon src="drinking_water.svg" /> + </itemgra> + <itemgra item_types="poi_emergency" order="12-"> + <icon src="emergency.svg" /> + </itemgra> + <itemgra item_types="poi_fair" order="12-"> + <icon src="fair.svg" /> + </itemgra> + <itemgra item_types="poi_firebrigade" order="12-"> + <icon src="firebrigade.svg" /> + </itemgra> + <itemgra item_types="poi_fish" order="9-"> + <icon src="fish.svg" /> + </itemgra> + <itemgra item_types="poi_forbidden_area" order="12-"> + <icon src="forbiden_area.svg" /> + </itemgra> + <itemgra item_types="poi_shop_gps" order="15-"> + <icon src="garmin.svg" /> + </itemgra> + <itemgra item_types="poi_golf" order="12-"> + <icon src="golf.svg" /> + </itemgra> + <itemgra item_types="poi_government_building" order="12-"> + <icon src="goverment_building.svg" /> + </itemgra> + <itemgra item_types="poi_height" order="12-"> + <icon src="height.svg" /> + </itemgra> + <itemgra item_types="poi_heliport" order="8-"> + <icon src="heliport.svg" /> + </itemgra> + <itemgra item_types="poi_hotspring" order="12-"> + <icon src="hotspring.svg" /> + </itemgra> + <itemgra item_types="poi_icesport" order="12-"> + <icon src="icesport.svg" /> + </itemgra> + <itemgra item_types="poi_information" order="12-"> + <icon src="information.svg" /> + </itemgra> + <itemgra item_types="poi_justice" order="12-"> + <icon src="justice.svg" /> + </itemgra> + <itemgra item_types="poi_landmark" order="11-"> + <icon src="landmark.svg" /> + </itemgra> + <itemgra item_types="poi_levee" order="12-"> + <icon src="levee.svg" /> + </itemgra> + <itemgra item_types="poi_level_crossing" order="11-"> + <icon src="level_crossing.svg" /> + </itemgra> + <itemgra item_types="poi_library" order="12-"> + <icon src="library.svg" /> + </itemgra> + <itemgra item_types="poi_locale" order="12-"> + <icon src="locale.svg" /> + </itemgra> + <itemgra item_types="poi_loudspeaker" order="12-"> + <icon src="loudspeaker.svg" /> + </itemgra> + <itemgra item_types="poi_mall" order="12-"> + <icon src="mall.svg" /> + </itemgra> + <itemgra item_types="poi_manmade_feature" order="12-"> + <icon src="manmade_feature.svg" /> + </itemgra> + <itemgra item_types="poi_marine" order="12-"> + <icon src="marine.svg" /> + </itemgra> + <itemgra item_types="poi_marine_type" order="12-"> + <icon src="marine_type.svg" /> + </itemgra> + <itemgra item_types="poi_mark" order="12-"> + <icon src="mark.svg" /> + </itemgra> + <itemgra item_types="poi_military" order="11-"> + <icon src="military.svg" /> + </itemgra> + <itemgra item_types="poi_mine" order="12-"> + <icon src="mine.svg" /> + </itemgra> + <itemgra item_types="poi_nondangerous" order="12-"> + <icon src="nondangerous.svg" /> + </itemgra> + <itemgra item_types="poi_oil_field" order="12-"> + <icon src="oil_field.svg" /> + </itemgra> + <itemgra item_types="poi_peak" order="7-"> + <icon src="peak.svg" /> + </itemgra> + <itemgra item_types="poi_personal_service" order="12-"> + <icon src="personal_service.svg" /> + </itemgra> + <itemgra item_types="poi_pharmacy" order="12-"> + <icon src="pharmacy.svg" /> + </itemgra> + <itemgra item_types="poi_post_office,poi_post_box" + order="13-"> + <icon src="post.svg" /> + </itemgra> + <itemgra item_types="poi_public_office" order="12-"> + <icon src="public_office.svg" /> + </itemgra> + <itemgra item_types="poi_rail_halt" order="11-"> + <circle color="#ff0000" radius="3" width="3" /> + <circle color="#000000" radius="5" width="2" + text_size="8" /> + </itemgra> + <itemgra item_types="poi_rail_station" order="9-"> + <circle color="#ff0000" radius="3" width="3" /> + <circle color="#000000" radius="6" width="2" + text_size="8" /> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="10-11"> + <circle color="#ff0000" radius="2" width="2" /> + </itemgra> + <itemgra item_types="poi_rail_tram_stop" order="12-"> + <circle color="#ff0000" radius="3" width="3" /> + <circle color="#606060" radius="5" width="2" + text_size="8" /> + </itemgra> + <itemgra item_types="poi_repair_service" order="12-"> + <icon src="repair_service.svg" /> + </itemgra> + <itemgra item_types="poi_resort" order="12-"> + <icon src="resort.svg" /> + </itemgra> + <itemgra item_types="poi_restaurant" order="12-"> + <icon src="restaurant.svg" /> + </itemgra> + <itemgra item_types="poi_restricted_area" order="12-"> + <icon src="restricted_area.svg" /> + </itemgra> + <itemgra item_types="poi_restroom" order="13-"> + <icon src="toilets.svg"/> + </itemgra> + <itemgra item_types="poi_sailing" order="12-"> + <icon src="sailing.svg" /> + </itemgra> + <itemgra item_types="poi_scenic_area" order="12-"> + <icon src="scenic_area.svg" /> + </itemgra> + <itemgra item_types="poi_school" order="12-"> + <icon src="school.svg" /> + </itemgra> + <itemgra item_types="poi_service" order="12-"> + <icon src="service.svg" /> + </itemgra> + <itemgra item_types="poi_shop_apparel" order="14-"> + <icon src="shop_apparel.svg" /> + </itemgra> + <itemgra item_types="poi_shop_bicycle" order="14-"> + <icon src="bicycle_shop.svg" /> + </itemgra> + <itemgra item_types="poi_shop_computer" order="14-"> + <icon src="shop_computer.svg" /> + </itemgra> + <itemgra item_types="poi_shop_department" order="14-"> + <icon src="shop_department.svg" /> + </itemgra> + <itemgra item_types="poi_shop_furniture" order="14-"> + <icon src="shop_furnish.svg" /> + </itemgra> + <itemgra item_types="poi_shop_grocery" order="14-"> + <icon src="shop_grocery.svg" /> + </itemgra> + <itemgra item_types="poi_shop_handg" order="14-"> + <icon src="shop_handg.svg" /> + </itemgra> + <itemgra item_types="poi_shop_merchandise" order="14-"> + <icon src="shop_merchandise.svg" /> + </itemgra> + <itemgra item_types="poi_shop_retail" order="14-"> + <icon src="shop_retail.svg" /> + </itemgra> + <itemgra item_types="poi_shower" order="13-"> + <icon src="shower.svg" /> + </itemgra> + <itemgra item_types="poi_skiing" order="11-"> + <icon src="skiing.svg" /> + </itemgra> + <itemgra item_types="poi_social_service" order="12-"> + <icon src="social_service.svg" /> + </itemgra> + <itemgra item_types="poi_sounding" order="12-"> + <icon src="sounding.svg" /> + </itemgra> + <itemgra item_types="poi_sport" order="12-"> + <icon src="sport.svg" /> + </itemgra> + <itemgra item_types="poi_stadium" order="11-"> + <icon src="stadium.svg" /> + </itemgra> + <itemgra item_types="poi_swimming" order="12-"> + <icon src="swimming.svg" /> + </itemgra> + <itemgra item_types="poi_telephone" order="13-"> + <icon src="telephone.svg" /> + </itemgra> + <itemgra item_types="poi_theater" order="12-"> + <icon src="theater.svg" /> + </itemgra> + <itemgra item_types="poi_tide" order="12-"> + <icon src="tide.svg" /> + </itemgra> + <itemgra item_types="poi_tower" order="13-"> + <icon src="tower.svg" /> + </itemgra> + <itemgra item_types="poi_townhall" order="12-"> + <icon src="townhall.svg" /> + </itemgra> + <itemgra item_types="poi_trail" order="12-"> + <icon src="trail.svg" /> + </itemgra> + <itemgra item_types="poi_truck_stop" order="12-"> + <icon src="truck_stop.svg" /> + </itemgra> + <itemgra item_types="poi_tunnel" order="12-"> + <icon src="tunnel.svg" /> + </itemgra> + <itemgra item_types="poi_wine" order="12-"> + <icon src="wine.svg" /> + </itemgra> + <itemgra item_types="poi_worship" order="8-"> + <icon src="worship.svg" /> + </itemgra> + <itemgra item_types="poi_wrecker" order="12-"> + <icon src="wrecker.svg" /> + </itemgra> + <itemgra item_types="poi_zoo" order="9-"> + <icon src="zoo.svg" /> + </itemgra> + <itemgra item_types="poi_picnic" order="12-"> + <icon src="picnic.svg" /> + </itemgra> + <itemgra item_types="poi_gc_multi" order="12-"> + <icon src="gc_multi.svg" /> + </itemgra> + <itemgra item_types="poi_gc_tradi" order="12-"> + <icon src="gc_tradi.svg" /> + </itemgra> + <itemgra item_types="poi_gc_event" order="12-"> + <icon src="gc_event.svg" /> + </itemgra> + <itemgra item_types="poi_gc_mystery" order="12-"> + <icon src="gc_mystery.svg" /> + </itemgra> + <itemgra item_types="poi_gc_question" order="12-"> + <icon src="gc_question.svg" /> + </itemgra> + <itemgra item_types="poi_gc_stages" order="12-"> + <icon src="gc_stages.svg" /> + </itemgra> + <itemgra item_types="poi_gc_reference" order="12-"> + <icon src="gc_reference.svg" /> + </itemgra> + <itemgra item_types="poi_gc_webcam" order="12-"> + <icon src="gc_webcam.svg" /> + </itemgra> + <itemgra item_types="traffic_signals" order="13-"> + <icon src="traffic_signals.svg" /> + </itemgra> + <itemgra item_types="poi_wifi" order="13-"> + <icon src="wifi.svg" /> + </itemgra> + <itemgra item_types="poi_image" order="12-"> + <image /> + </itemgra> + <itemgra item_types="poi_bench" order="15-"> + <icon src="bench.svg" /> + </itemgra> + <itemgra item_types="poi_biergarten" order="12-"> + <icon src="biergarten.svg" /> + </itemgra> + <itemgra item_types="poi_boundary_stone" order="13-"> + <icon src="boundary_stone.svg" /> + </itemgra> + <itemgra item_types="poi_castle" order="11-"> + <icon src="castle.svg" /> + </itemgra> + <itemgra item_types="poi_ruins" order="11-"> + <icon src="ruins.svg" /> + </itemgra> + <itemgra item_types="poi_hunting_stand" order="12-"> + <icon src="hunting_stand.svg" /> + </itemgra> + <itemgra item_types="poi_memorial" order="12-"> + <icon src="memorial.svg" /> + </itemgra> + <itemgra item_types="poi_monument" order="12-"> + <icon src="memorial.svg" /> + </itemgra> + <itemgra item_types="poi_shelter" order="11-"> + <icon src="shelter.svg" /> + </itemgra> + <itemgra item_types="poi_fountain" order="13-"> + <icon src="fountain.svg" /> + </itemgra> + <itemgra item_types="poi_potable_water" order="13-"> + <icon src="drinking_water.svg"/> + </itemgra> + <itemgra item_types="poi_toilets" order="12-"> + <icon src="toilets.svg" /> + </itemgra> + <itemgra item_types="poi_viewpoint" order="10-"> + <icon src="viewpoint.svg" /> + </itemgra> + <itemgra item_types="tec_common" order="11-"> + <icon src="tec_common.svg"/> + </itemgra> + <itemgra item_types="vehicle" order="0-"> + <icon src="gui_vehicle_16_16.svg" /> + </itemgra> + <itemgra item_types="vehicle_pedestrian" order="0-"> + <icon src="gui_vehicle_pedestrian_16_16.svg" /> + </itemgra> + <itemgra item_types="poi_custom0,poi_custom1,poi_custom2,poi_custom3,poi_custom4,poi_custom5,poi_custom6,poi_custom7,poi_custom8,poi_custom9,poi_customa,poi_customb,poi_customc,poi_customd,poi_custome,poi_customf" + order="10-"> + <icon src="%s" /> + </itemgra> + </layer> + <layer name="Android-POI-Labels-full" active="0"> + <itemgra item_types="poi_airport,town_ghost,poi_hotel,poi_car_parking,poi_car_dealer_parts,poi_car_sharing,poi_fuel,poi_shopping,poi_attraction,poi_cafe,poi_bar,poi_pub,highway_exit,poi_camp_rv,poi_museum_history,poi_hospital,poi_dining,poi_fastfood,poi_police,poi_autoservice,poi_bank,poi_atm,poi_bus_station,poi_bus_stop,poi_business_service,poi_car_rent,poi_church,poi_bahai,poi_buddhist,poi_hindu,poi_islamic,poi_jain,poi_jewish,poi_pagan,poi_pastafarian,poi_shinto,poi_sikh,poi_taoist,poi_cinema,poi_concert,poi_drinking_water,poi_emergency,poi_fair,poi_fish,poi_government_building,poi_hotspring,poi_information,poi_justice,poi_landmark,poi_library,poi_mall,poi_manmade_feature,poi_marine,poi_marine_type,poi_mark,poi_oil_field,poi_peak,poi_personal_service,poi_pharmacy,poi_post_office,poi_public_office,poi_rail_halt,poi_rail_station,poi_rail_tram_stop,poi_repair_service,poi_resort,poi_restaurant,poi_restricted_area,poi_sailing,poi_scenic_area,poi_shop_bicycle,poi_school,poi_service,poi_shop_retail,poi_skiing,poi_social_service,poi_sport,poi_stadium,poi_swimming,poi_theater,poi_townhall,poi_trail,poi_truck_stop,poi_tunnel,poi_worship,poi_wrecker,poi_zoo,poi_biergarten,poi_castle,poi_ruins,poi_memorial,poi_monument,poi_shelter,poi_fountain,poi_viewpoint,vehicle" + order="14-"> + <circle color="#606060" radius="0" width="0" + text_size="10" /> + </itemgra> + <itemgra item_types="poi_custom0,poi_custom1,poi_custom2,poi_custom3,poi_custom4,poi_custom5,poi_custom6,poi_custom7,poi_custom8,poi_custom9,poi_customa,poi_customb,poi_customc,poi_customd,poi_custome,poi_customf" + order="14-"> + <circle color="#606060" radius="0" width="0" + text_size="10" /> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + + <layout name="Car-simple" color="#839ea9"> + <layer name="polygon"> + <itemgra item_types="poly_town" order="8-"> + <polygon color="#6b8091"/> + </itemgra> + </layer> + <layer name="streets"> + <itemgra item_types="water_line" order="11-"> + <polyline width="3" color="#5e71a7" /> + </itemgra> + <itemgra item_types="rail" order="9-"> + <polyline width="4" color="#a4bac8" /> + <polyline width="1" color="#e0e0e0" dash="4,6"/> + </itemgra> + <itemgra item_types="street_1_city,street_1_land" order="12-"> + <polyline width="5" color="#516170"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="12-"> + <polyline width="7" color="#516170"/> + </itemgra> + <itemgra item_types="street_1_city,street_1_land" order="11"> + <polyline width="3" color="#516170"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="9-11"> + <polyline width="5" color="#516170"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="11-"> + <polyline width="9" color="#516170" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="8-10"> + <polyline width="7" color="#516170" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11-"> + <polyline width="9" color="#516170" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="8-10"> + <polyline width="7" color="#516170" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="6-7"> + <polyline width="3" color="#516170" /> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="4-"> + <polyline width="9" color="#516170" /> + </itemgra> + + <itemgra item_types="street_route" > + <polyline width="11" color="#516170" /> + </itemgra> + + <itemgra item_types="street_1_city,street_1_land" order="12-"> + <polyline width="3" color="#a4bac8" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="12-"> + <polyline width="5" color="#90a3af" /> + </itemgra> + <itemgra item_types="street_1_city,street_1_land" order="11"> + <polyline width="1" color="#a4bac8" /> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="9-11"> + <polyline width="3" color="#90a3af" /> + </itemgra> + + <itemgra item_types="street_3_city,street_3_land,ramp" order="11-"> + <polyline width="6" color="#a4bac8" /> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="8-10"> + <polyline width="4" color="#a4bac8" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11-"> + <polyline width="6" color="#c7e1f2" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="8-10"> + <polyline width="4" color="#c7e1f2" /> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="6-7"> + <polyline width="1" color="#c7e1f2" /> + </itemgra> + + <itemgra item_types="highway_city,highway_land" order="4-"> + <polyline width="3" color="#c0e1ff" /> + </itemgra> + + <itemgra item_types="street_route" > + <polyline width="9" color="#ffffff" /> + </itemgra> + + <itemgra item_types="waypoint,route_end" > + <circle color="#000000" radius="8" width="2" text_size="24"/> + </itemgra> + </layer> + <layer name="labels"> + <itemgra item_types="water_line" order="11-"> + <text text_size="16" color="#0000ff" /> + </itemgra> + <itemgra item_types="street_1_city,street_2_city,street_3_city,street_4_city,highway_city,street_1_land,street_2_land,street_3_land,street_4_land,street_n_lanes,highway_land,living_street,footway"> + <text text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="10-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_1e3,town_label_2e3,district_label_1e3,district_label_2e3" order="9-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_5e3,district_label_5e3" order="8-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_1e4,district_label_1e4" order="7-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_2e4,district_label_2e4" order="6-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_5e4,town_label_1e5,district_label_5e4,district_label_1e5" order="5-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_2e5,district_label_2e5" order="4-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + <itemgra item_types="town_label_5e5,district_label_5e5" order="2-"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6,town_label_1e7,district_label_1e6,district_label_2e6,district_label_5e6,district_label_1e7"> + <circle radius="3" text_size="16" color="#ffffff" background_color="#000000"/> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + + <layout name="Bike" color="#ffefb7" font="Liberation Sans"> + + <cursor w="26" h="26"> + <itemgra> + <circle color="#0000ff" radius="24" width="2"> + <coord x="0" y="0"/> + </circle> + </itemgra> + <itemgra speed_range="-2"> + <polyline color="#0000ff" width="2"> + <coord x="0" y="0"/> + <coord x="0" y="0"/> + </polyline> + </itemgra> + <itemgra speed_range="3-"> + <polyline color="#0000ff" width="2"> + <coord x="-7" y="-10"/> + <coord x="0" y="12"/> + <coord x="7" y="-10"/> + </polyline> + </itemgra> + </cursor> + + <layer name="Landuse"> + <itemgra item_types="image" order="0-"> + <image/> + </itemgra> + <itemgra item_types="poly_wood" order="0-"> + <polygon color="#8ec78d"/> + </itemgra> + <itemgra item_types="poly_town" order="0-"> + <polygon color="#ffc895"/> + <polyline color="#ebb481"/> + </itemgra> + <itemgra item_types="poly_park" order="0-"> + <polygon color="#7cc334"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_water" order="0-"> + <polygon color="#82c8ea"/> + <polyline color="#5096b8"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_land" order="0-"> + <polygon color="#ffefb7"/> + <polyline color="#ffefb7"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_airport" order="0-"> + <polygon color="#a0a0a0"/> + </itemgra> + <itemgra item_types="poly_sport" order="0-"> + <polygon color="#ff8c00"/> + </itemgra> + <itemgra item_types="poly_industry,poly_place,poly_railway" order="0-"> + <polygon color="#e6e6e6"/> + </itemgra> + <itemgra item_types="poly_commercial" order="0-"> + <polygon color="#fff8dc"/> + </itemgra> + <itemgra item_types="poly_industry,poly_building,poly_place,poly_brownfield,poly_greenfield,poly_construction,poly_railway" order="0-"> + <polygon color="#ecd8ff"/> + </itemgra> + <itemgra item_types="poly_farm" order="0-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_meadow" order="0-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + </itemgra> + <itemgra item_types="poly_scree,poly_scrub,poly_fell,poly_heath" order="0-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_marsh,poly_mud,poly_quarry" order="0-"> + <polygon color="#DEB887"/> + <polyline color="#DEB887"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_allotments,poly_playground,poly_village_green,poly_recreation_ground,poly_common,poly_garden" order="0-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_ruins" order="0-"> + <polygon color="#b6a6a6"/> + </itemgra> + <itemgra item_types="poly_apron" order="0-"> + <polygon color="#d0d0d0"/> + </itemgra> + <itemgra item_types="poly_terminal" order="7-"> + <polygon color="#e3c6a6"/> + </itemgra> + <itemgra item_types="poly_cemetery" order="1-"> + <polygon color="#bde3cb"/> + </itemgra> + <itemgra item_types="poly_car_parking" order="1-"> + <polygon color="#d2d2d2"/> + </itemgra> + <itemgra item_types="poly_building" order="0-"> + <polygon color="#ff6347"/> + </itemgra> + </layer> + <layer name="Contour Lines"> + <itemgra item_types="height_line_1" order="8"> + <polyline color="#A9A9A9" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="height_line_1" order="9"> + <polyline color="#A9A9A9" width="2"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="height_line_2" order="9"> + <polyline color="#A9A9A9" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="height_line_1" order="10-"> + <polyline color="#A9A9A9" width="3"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="height_line_2" order="10-"> + <polyline color="#A9A9A9" width="2"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="height_line_3" order="10-"> + <polyline color="#A9A9A9" width="1"/> + </itemgra> + </layer> + <!-- "Contour Lines" --> + + <layer name="Barriers"> + <itemgra item_types="ditch" order="8-"> + <polyline color="#B8860B" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="hedge" order="8-"> + <polyline color="#90EE90" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="fence" order="8-"> + <polyline color="#808080" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="wall" order="8-"> + <polyline color="#808080" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="retaining_wall" order="8-"> + <polyline color="#808080" width="1"/> + <text text_size="8"/> + </itemgra> + <itemgra item_types="city_wall" order="8-"> + <polyline color="#CD5C5C" width="1"/> + <text text_size="8"/> + </itemgra> + </layer> + <!-- "Barriers" --> + + <layer name="Waterways"> + <itemgra item_types="water_line" order="0-"> + <polyline color="#82c8ea" width="2"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_river" order="0-"> + <polyline color="#82c8ea" width="4"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_canal" order="0-"> + <polyline color="#82c8ea" width="3"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_stream" order="0-"> + <polyline color="#82c8ea" width="2"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="water_drain" order="0-"> + <polyline color="#82c8ea" width="1"/> + <text text_size="5"/> + </itemgra> + </layer> + <layer name="Borders"> + <itemgra item_types="border_state" order="0-5"> + <polyline color="#778899" width="3"/> + <polyline color="#ffefb7" dash="3,2,1,3" width="1"/> + </itemgra> + <itemgra item_types="border_country" order="0-5"> + <polyline color="#778899" width="2"/> + <polyline color="#ffefb7" dash="3,2,1,3" width="1"/> + </itemgra> + <itemgra item_types="border_state" order="6-11"> + <polyline color="#778899" width="3"/> + <polyline color="#ffefb7" dash="6,6,1,6" width="1"/> + </itemgra> + <itemgra item_types="border_country" order="6-11"> + <polyline color="#778899" width="2"/> + <polyline color="#ffefb7" dash="6,6,1,6" width="1"/> + </itemgra> + <itemgra item_types="border_state" order="12-20"> + <polyline color="#778899" width="3"/> + <polyline color="#ffefb7" dash="10,10,2,10" width="1"/> + </itemgra> + <itemgra item_types="border_country" order="12-20"> + <polyline color="#778899" width="2"/> + <polyline color="#ffefb7" dash="10,10,2,10" width="1"/> + </itemgra> + </layer> + <layer name="Current Route"> + <itemgra item_types="street_route" order="2"> + <polyline color="#FF00FF" width="4"/> + </itemgra> + <itemgra item_types="street_route" order="3-5"> + <polyline color="#FF00FF" width="8"/> + </itemgra> + <itemgra item_types="street_route" order="6"> + <polyline color="#FF00FF" width="10"/> + </itemgra> + <itemgra item_types="street_route" order="7-8"> + <polyline color="#FF00FF" width="16"/> + </itemgra> + <itemgra item_types="street_route" order="9-10"> + <polyline color="#FF00FF" width="20"/> + </itemgra> + <itemgra item_types="street_route" order="11"> + <polyline color="#FF00FF" width="28"/> + </itemgra> + <itemgra item_types="street_route" order="12"> + <polyline color="#FF00FF" width="32"/> + </itemgra> + <itemgra item_types="street_route" order="13"> + <polyline color="#FF00FF" width="52"/> + </itemgra> + <itemgra item_types="street_route" order="14"> + <polyline color="#FF00FF" width="64"/> + </itemgra> + <itemgra item_types="street_route" order="15"> + <polyline color="#FF00FF" width="68"/> + </itemgra> + <itemgra item_types="street_route" order="16"> + <polyline color="#FF00FF" width="132"/> + </itemgra> + <itemgra item_types="street_route" order="17"> + <polyline color="#FF00FF" width="268"/> + </itemgra> + <itemgra item_types="street_route" order="18"> + <polyline color="#FF00FF" width="530"/> + </itemgra> + </layer> + <layer name="Ways and Paths"> + <itemgra item_types="powerline" order="12-"> + <polyline color="#778899" width="1"/> + <polyline color="#778899" dash="1,80" width="5"/> + </itemgra> + <itemgra item_types="street_nopass" order="10-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="track_paved" order="8-"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#fefefe" width="3"/> + </itemgra> + <itemgra item_types="track_gravelled" order="9-"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="track_unpaved" order="10-"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#fefefe" width="1"/> + </itemgra> + <itemgra item_types="track_ground" order="11-"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#fefefe" width="1" dash="6,6"/> + </itemgra> + <itemgra item_types="track_grass" order="12-"> + <polyline color="#fefefe" width="2"/> + <polyline color="#ffefb7" width="1" dash="6,6"/> + </itemgra> + <itemgra item_types="bridleway" order="10-"> + <polyline color="#8b4513" width="3"/> + <polyline color="#f4a460" width="1"/> + </itemgra> + <itemgra item_types="cycleway" order="10-"> + <polyline color="#006400" width="4"/> + <polyline color="#3cb371" width="2"/> + </itemgra> + <itemgra item_types="footway" order="12-"> + <polyline color="#8b4513" width="3"/> + <polyline color="#CD853F" width="1"/> + </itemgra> + <itemgra item_types="steps" order="12-"> + <polyline color="#8b4513" width="3"/> + <polyline color="#F4A460" width="1" dash="6,4"/> + </itemgra> + <itemgra item_types="path" order="11-"> + <polyline color="#8b4513" width="3"/> + <polyline color="#ffefb7" width="1" dash="2,4"/> + </itemgra> + <itemgra item_types="hiking" order="11-"> + <polyline color="#8b4513" width="2"/> + <polyline color="#ffefb7" width="1" dash="4,4"/> + </itemgra> + <itemgra item_types="hiking_mountain" order="11-"> + <polyline color="#8b4513" width="2"/> + <polyline color="#ffefb7" width="1" dash="6,4"/> + </itemgra> + <itemgra item_types="hiking_mountain_demanding" order="13-"> + <polyline color="#8b4513" width="2"/> + <polyline color="#ffefb7" width="1" dash="8,4"/> + </itemgra> + <itemgra item_types="hiking_alpine" order="13-"> + <polyline color="#8b4513" width="1" dash="10,4"/> + </itemgra> + <itemgra item_types="hiking_alpine_demanding" order="14-"> + <polyline color="#8b4513" width="1" dash="12,4"/> + </itemgra> + <itemgra item_types="hiking_alpine_difficult" order="14-"> + <polyline color="#8b4513" width="1" dash="14,4"/> + </itemgra> + </layer> + <layer name="Streets"> + <itemgra item_types="poly_pedestrian,poly_plaza" order="0-"> + <polygon color="#d2d2d2"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="10"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#dddddd" width="1"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="11"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#dddddd" width="3"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="12"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#dddddd" width="6"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="13"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#dddddd" width="7"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="14"> + <polyline color="#d2d2d2" width="13"/> + <polyline color="#dddddd" width="9"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="15"> + <polyline color="#d2d2d2" width="18"/> + <polyline color="#dddddd" width="14"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="16"> + <polyline color="#d2d2d2" width="21"/> + <polyline color="#dddddd" width="17"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="17"> + <polyline color="#d2d2d2" width="25"/> + <polyline color="#dddddd" width="21"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="18"> + <polyline color="#d2d2d2" width="40"/> + <polyline color="#dddddd" width="34"/> + </itemgra> + <itemgra item_types="street_service" order="9"> + <polyline color="#d2d2d2" width="2"/> + <polyline color="#fefefe" width="1"/> + </itemgra> + <itemgra item_types="street_service" order="10"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="11"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_service" order="12"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#fefefe" width="3"/> + </itemgra> + <itemgra item_types="street_service" order="13"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#fefefe" width="4"/> + </itemgra> + <itemgra item_types="street_service" order="14"> + <polyline color="#d2d2d2" width="7"/> + <polyline color="#fefefe" width="5"/> + </itemgra> + <itemgra item_types="street_service" order="15"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#fefefe" width="6"/> + </itemgra> + <itemgra item_types="street_service" order="16"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#fefefe" width="7"/> + </itemgra> + <itemgra item_types="street_service" order="17"> + <polyline color="#d2d2d2" width="10"/> + <polyline color="#fefefe" width="8"/> + </itemgra> + <itemgra item_types="street_service" order="18"> + <polyline color="#d2d2d2" width="11"/> + <polyline color="#fefefe" width="9"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="12"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="13"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#fefefe" width="2"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="14"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#fefefe" width="3"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="15"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#fefefe" width="4"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="16"> + <polyline color="#d2d2d2" width="7"/> + <polyline color="#fefefe" width="5"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="17"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#fefefe" width="6"/> + </itemgra> + <itemgra item_types="street_parking_lane" order="18"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#fefefe" width="7"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="8-10"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#ffffff" width="2"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="11"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#ffffff" width="4"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="12"> + <polyline color="#d2d2d2" width="10"/> + <polyline color="#ffffff" width="8"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="13"> + <polyline color="#d2d2d2" width="12"/> + <polyline color="#ffffff" width="9"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="14"> + <polyline color="#d2d2d2" width="15"/> + <polyline color="#ffffff" width="13"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="15"> + <polyline color="#d2d2d2" width="17"/> + <polyline color="#ffffff" width="14"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="16"> + <polyline color="#d2d2d2" width="33"/> + <polyline color="#ffffff" width="26"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="17"> + <polyline color="#d2d2d2" width="69"/> + <polyline color="#ffffff" width="61"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="18"> + <polyline color="#d2d2d2" width="132"/> + <polyline color="#ffffff" width="126"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="7-8"> + <polyline color="#c0c0c0" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="9"> + <polyline color="#c0c0c0" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="10"> + <polyline color="#c0c0c0" width="4"/> + <polyline color="#ffff00" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="11"> + <polyline color="#c0c0c0" width="5"/> + <polyline color="#ffff00" width="3"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="12"> + <polyline color="#c0c0c0" width="7"/> + <polyline color="#ffff00" width="5"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="13"> + <polyline color="#c0c0c0" width="11"/> + <polyline color="#ffff00" width="8"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="14"> + <polyline color="#c0c0c0" width="14"/> + <polyline color="#ffff00" width="11"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="15"> + <polyline color="#c0c0c0" width="19"/> + <polyline color="#ffff00" width="15"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="16"> + <polyline color="#c0c0c0" width="30"/> + <polyline color="#ffff00" width="26"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="17"> + <polyline color="#c0c0c0" width="63"/> + <polyline color="#ffff00" width="57"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,ramp" order="18"> + <polyline color="#c0c0c0" width="100"/> + <polyline color="#ffff00" width="90"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="7-8"> + <polyline color="#a0a0a0" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="9"> + <polyline color="#a0a0a0" width="5"/> + <polyline color="#ffff00" width="3"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="10"> + <polyline color="#a0a0a0" width="8"/> + <polyline color="#ffff00" width="6"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="11"> + <polyline color="#a0a0a0" width="9"/> + <polyline color="#ffff00" width="7"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="12"> + <polyline color="#a0a0a0" width="13"/> + <polyline color="#ffff00" width="9"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="13"> + <polyline color="#a0a0a0" width="18"/> + <polyline color="#ffff00" width="14"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="14"> + <polyline color="#a0a0a0" width="21"/> + <polyline color="#ffff00" width="17"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="15"> + <polyline color="#a0a0a0" width="25"/> + <polyline color="#ffff00" width="21"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="16"> + <polyline color="#a0a0a0" width="40"/> + <polyline color="#ffff00" width="34"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="17"> + <polyline color="#a0a0a0" width="79"/> + <polyline color="#ffff00" width="73"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,roundabout" order="18"> + <polyline color="#a0a0a0" width="156"/> + <polyline color="#ffff00" width="150"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="2-6"> + <polyline color="#404040" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="7-8"> + <polyline color="#404040" width="3"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="9"> + <polyline color="#000000" width="5"/> + <polyline color="#ff0000" width="3"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10"> + <polyline color="#000000" width="6"/> + <polyline color="#ff0000" width="4"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11"> + <polyline color="#000000" width="9"/> + <polyline color="#ff0000" width="7"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="12"> + <polyline color="#000000" width="13"/> + <polyline color="#ff0000" width="9"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="13"> + <polyline color="#000000" width="18"/> + <polyline color="#ff0000" width="14"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="14"> + <polyline color="#000000" width="21"/> + <polyline color="#ff0000" width="17"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="15"> + <polyline color="#000000" width="24"/> + <polyline color="#ff0000" width="20"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="16"> + <polyline color="#000000" width="39"/> + <polyline color="#ff0000" width="33"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="17"> + <polyline color="#000000" width="78"/> + <polyline color="#ff0000" width="72"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="18"> + <polyline color="#000000" width="156"/> + <polyline color="#ff0000" width="150"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="2"> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="3-5"> + <polyline color="#ff0000" width="3"/> + <polyline color="#ffff00" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="6"> + <polyline color="#ff0000" width="4"/> + <polyline color="#ffff00" width="2"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="7-8"> + <polyline color="#ff0000" width="7"/> + <polyline color="#ffff00" width="5"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="9-10"> + <polyline color="#ff0000" width="9"/> + <polyline color="#ffff00" width="5"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="11"> + <polyline color="#ff0000" width="13"/> + <polyline color="#ffff00" width="9"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="12"> + <polyline color="#ff0000" width="15"/> + <polyline color="#ffff00" width="10"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="13"> + <polyline color="#ff0000" width="25"/> + <polyline color="#ffff00" width="17"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="14"> + <polyline color="#ff0000" width="31"/> + <polyline color="#ffff00" width="24"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="15"> + <polyline color="#ff0000" width="33"/> + <polyline color="#ffff00" width="27"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="16"> + <polyline color="#ff0000" width="65"/> + <polyline color="#ffff00" width="59"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="17"> + <polyline color="#ff0000" width="133"/> + <polyline color="#ffff00" width="127"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="18"> + <polyline color="#ff0000" width="264"/> + <polyline color="#ffff00" width="258"/> + <polyline color="#ff0000" width="1"/> + </itemgra> + </layer> + <layer name="Aerialways"> + <itemgra item_types="aeroway_taxiway" order="10"> + <polyline color="#989994" width="4"/> + <polyline color="#d3dbbc" width="2"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="11"> + <polyline color="#989994" width="6"/> + <polyline color="#d3dbbc" width="4"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="12"> + <polyline color="#989994" width="10"/> + <polyline color="#d3dbbc" width="8"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="13"> + <polyline color="#989994" width="12"/> + <polyline color="#d3dbbc" width="9"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="14"> + <polyline color="#989994" width="15"/> + <polyline color="#d3dbbc" width="13"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="15"> + <polyline color="#989994" width="17"/> + <polyline color="#d3dbbc" width="14"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="16"> + <polyline color="#989994" width="33"/> + <polyline color="#d3dbbc" width="26"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="17"> + <polyline color="#989994" width="69"/> + <polyline color="#d3dbbc" width="61"/> + </itemgra> + <itemgra item_types="aeroway_taxiway" order="18"> + <polyline color="#989994" width="132"/> + <polyline color="#d3dbbc" width="126"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="2-6"> + <polyline color="#404040" width="1"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="7-8"> + <polyline color="#404040" width="3"/> + <polyline color="#d3dbbc" width="1"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="9"> + <polyline color="#6b6f5f" width="5"/> + <polyline color="#d3dbbc" width="3"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="10"> + <polyline color="#6b6f5f" width="6"/> + <polyline color="#d3dbbc" width="4"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="11"> + <polyline color="#6b6f5f" width="9"/> + <polyline color="#d3dbbc" width="7"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="12"> + <polyline color="#6b6f5f" width="13"/> + <polyline color="#d3dbbc" width="9"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="13"> + <polyline color="#6b6f5f" width="18"/> + <polyline color="#d3dbbc" width="14"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="14"> + <polyline color="#6b6f5f" width="21"/> + <polyline color="#d3dbbc" width="17"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="15"> + <polyline color="#6b6f5f" width="24"/> + <polyline color="#d3dbbc" width="20"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="16"> + <polyline color="#6b6f5f" width="39"/> + <polyline color="#d3dbbc" width="33"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="17"> + <polyline color="#6b6f5f" width="78"/> + <polyline color="#d3dbbc" width="72"/> + </itemgra> + <itemgra item_types="aeroway_runway" order="18"> + <polyline color="#6b6f5f" width="156"/> + <polyline color="#d3dbbc" width="150"/> + </itemgra> + </layer> + <layer name="Railways"> + <itemgra item_types="rail" order="6-9"> + <polyline color="#696969" width="4"/> + <polyline color="#FFFFFF" dash="2,5" width="1"/> + </itemgra> + <itemgra item_types="rail_narrow_gauge" order="6-9"> + <polyline color="#696969" width="4"/> + <polyline color="#FFFFFF" dash="2,5" width="1"/> + </itemgra> + <itemgra item_types="rail" order="10-13"> + <polyline color="#696969" width="6"/> + <polyline color="#FFFFFF" dash="3,8" width="1"/> + </itemgra> + <itemgra item_types="rail_narrow_gauge" order="10-13"> + <polyline color="#696969" width="6"/> + <polyline color="#FFFFFF" dash="3,8" width="1"/> + </itemgra> + <itemgra item_types="rail" order="14-18"> + <polyline color="#696969" width="8"/> + <polyline color="#FFFFFF" dash="4,12" width="1"/> + </itemgra> + <itemgra item_types="rail_narrow_gauge" order="14-18"> + <polyline color="#696969" width="8"/> + <polyline color="#FFFFFF" dash="4,12" width="1"/> + </itemgra> + <itemgra item_types="rail_light" order="10-13"> + <polyline color="#696969" width="4"/> + <polyline color="#FFFFFF" dash="2,5" width="1"/> + </itemgra> + <itemgra item_types="rail_light" order="14-18"> + <polyline color="#696969" width="6"/> + <polyline color="#FFFFFF" dash="4,8" width="1"/> + </itemgra> + <itemgra item_types="rail_subway" order="8-"> + <polyline color="#696969" width="2"/> + <polyline color="#FFFFFF" dash="5,5" width="1"/> + </itemgra> + <itemgra item_types="rail_mono" order="10-"> + <polyline color="#696969" width="2"/> + </itemgra> + <itemgra item_types="rail_tram,bus_guideway" order="10-"> + <polyline color="#696969" width="2"/> + </itemgra> + <itemgra item_types="rail_preserved" order="10-"> + <polyline color="#696969" width="1" dash="7"/> + </itemgra> + <itemgra item_types="rail_disused" order="12-"> + <polyline color="#d3d3d3" width="1" dash="10"/> + </itemgra> + <itemgra item_types="rail_abandoned" order="12-"> + <polyline color="#f5f5f5" width="1" dash="10"/> + </itemgra> + <itemgra item_types="lift_cable_car" order="10-"> + <polyline color="#778899" width="5"/> + <polyline color="#ffefb7" dash="1,40" width="1"/> + </itemgra> + <itemgra item_types="lift_chair" order="10-"> + <polyline color="#778899" width="5"/> + <polyline color="#ffefb7" dash="1,40" width="1"/> + </itemgra> + <itemgra item_types="lift_drag" order="10-"> + <polyline color="#778899" width="5"/> + <polyline color="#ffefb7" dash="1,40" width="1"/> + </itemgra> + <itemgra item_types="ferry" order="5-"> + <polyline color="#000000" width="3"/> + <polyline color="#ffefb7" width="1" dash="5"/> + </itemgra> + <itemgra item_types="track" order="3-"> + <polyline color="#3f3f3f" width="1"/> + </itemgra> + </layer> + <layer name="Internal"> + <itemgra item_types="track" order="7-"> + <polyline color="#3f3f3f" width="1"/> + </itemgra> + <itemgra item_types="track_tracked" order="7-"> + <polyline color="#3f3fff" width="3"/> + </itemgra> + <itemgra item_types="rg_segment" order="12-"> + <polyline color="#FF089C" width="1"/> + <arrows color="#FF089C" width="1"/> + </itemgra> + <itemgra item_types="rg_point" order="12-"> + <circle color="#FF089C" radius="10" text_size="7"/> + </itemgra> + <itemgra item_types="nav_left_1" order="0-"> + <icon src="nav_left_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_2" order="0-"> + <icon src="nav_left_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_left_3" order="0-"> + <icon src="nav_left_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_1" order="0-"> + <icon src="nav_right_1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_2" order="0-"> + <icon src="nav_right_2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_right_3" order="0-"> + <icon src="nav_right_3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_straight" order="0-"> + <icon src="nav_straight_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_left" order="0-"> + <icon src="nav_turnaround_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_turnaround_right" order="0-"> + <icon src="nav_turnaround_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l1" order="0-"> + <icon src="nav_roundabout_l1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r1" order="0-"> + <icon src="nav_roundabout_r1_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l2" order="0-"> + <icon src="nav_roundabout_l2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r2" order="0-"> + <icon src="nav_roundabout_r2_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l3" order="0-"> + <icon src="nav_roundabout_l3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r3" order="0-"> + <icon src="nav_roundabout_r3_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l4" order="0-"> + <icon src="nav_roundabout_l4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r4" order="0-"> + <icon src="nav_roundabout_r4_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l5" order="0-"> + <icon src="nav_roundabout_l5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r5" order="0-"> + <icon src="nav_roundabout_r5_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l6" order="0-"> + <icon src="nav_roundabout_l6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r6" order="0-"> + <icon src="nav_roundabout_r6_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l7" order="0-"> + <icon src="nav_roundabout_l7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r7" order="0-"> + <icon src="nav_roundabout_r7_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_l8" order="0-"> + <icon src="nav_roundabout_l8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_roundabout_r8" order="0-"> + <icon src="nav_roundabout_r8_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_left" order="0-"> + <icon src="nav_keep_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_left" order="0-"> + <icon src="nav_merge_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_keep_right" order="0-"> + <icon src="nav_keep_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_merge_right" order="0-"> + <icon src="nav_merge_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_left" order="0-"> + <icon src="nav_exit_left_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="nav_exit_right" order="0-"> + <icon src="nav_exit_right_bk.svg" w="32" h="32"/> + </itemgra> + <itemgra item_types="route_end" order="0-"> + <icon src="nav_destination_bk.svg" w="32" h="32" x="4" y="30"/> + </itemgra> + + <itemgra item_types="waypoint,route_end" order="2"> + <circle color="#000000" radius="4" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="3-5"> + <circle color="#000000" radius="8" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="6"> + <circle color="#000000" radius="10" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="7-8"> + <circle color="#000000" radius="16" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="9-10"> + <circle color="#000000" radius="20" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="11"> + <circle color="#000000" radius="28" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="12"> + <circle color="#000000" radius="32" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="13"> + <circle color="#000000" radius="52" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="14"> + <circle color="#000000" radius="64" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="15"> + <circle color="#000000" radius="68" width="6" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="16"> + <circle color="#000000" radius="132" width="8" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="17"> + <circle color="#000000" radius="268" width="8" text_size="48"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="18"> + <circle color="#000000" radius="530" width="8" text_size="48"/> + </itemgra> + + <itemgra item_types="nav_none" order="0-"> + <icon src="unknown.svg"/> + </itemgra> + <itemgra item_types="announcement" order="7-"> + <icon src="gui_sound_32_32.svg"/> + <circle color="#FF089C" radius="10" text_size="7"/> + </itemgra> + </layer> + <layer name="Street Labels"> + <itemgra item_types="highway_exit_label" order="10-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="highway_city,highway_land,street_4_city,street_4_land,street_n_lanes,living_street" order="10-18"> + <text text_size="8"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,street_3_city,street_3_land,ramp" order="11-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="street_nopass,street_0,street_1_city,street_1_land" order="12-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="track,track_paved,track_gravelled,track_unpaved,track_ground,track_grass" order="12-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="bridleway,cycleway,footway,steps,path" order="12-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="hiking,hiking_mountain,hiking_mountain_demanding,hiking_alpine,hiking_alpine_demanding,hiking_alpine_difficult" order="12-18"> + <text text_size="9"/> + </itemgra> + </layer> + <layer name="Unknown Elements"> + <!-- This entry shows all unknown linear elements as blue lines --> + <!-- + <itemgra item_types="street_unkn" order="0-"> + <polyline color="#8080ff" width="3"/> + </itemgra> + --> + </layer> + <layer name="Place Labels"> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="12-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="district_label_1e3,district_label_2e3,district_label_5e3" order="9-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="town_label_1e3,town_label_2e3,town_label_5e3,place_label" order="9-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="district_label_1e4,district_label_2e4,district_label_5e4" order="7-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="town_label_1e4,town_label_2e4,town_label_5e4" order="7-"> + <circle color="#000000" radius="3" text_size="12"/> + </itemgra> + <itemgra item_types="district_label_1e5,district_label_2e5,district_label_5e5" order="5-"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" order="5-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="district_label_1e6,district_label_2e6,district_label_5e6" order="3-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6" order="3-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e7,district_label_1e7" order="1-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + </layer> + + <xi:include xpointer="xpointer(/config/navit/layout[@name='Car']/layer[@name='POI Symbols'])"/> + <!--<xi:include xpointer="xpointer(/config/navit/layout[@name='Car']/layer[@name='POI Labels'])"/> --> + + <!-- "Bicycle POIs" --> + <layer name="Bicycle POI Symbols"> + <itemgra item_types="poi_bicycle_parking" order="12-"> + <icon src="bicycle_parking.svg"/> + </itemgra> + <itemgra item_types="poi_bicycle_rental" order="11-"> + <icon src="bicycle_rental.svg"/> + </itemgra> + </layer> + <layer name="Bicycle POI Labels"> + <itemgra item_types="poi_bicycle_parking,poi_bicycle_rental" order="14-"> + <circle color="#606060" radius="0" width="0" text_size="10"/> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + + <layout name="T@H" font="Liberation Sans"> + + <cursor w="26" h="26"> + <itemgra> + <circle color="#0000ff" radius="24" width="2"> + <coord x="0" y="0"/> + </circle> + </itemgra> + <itemgra speed_range="-2"> + <polyline color="#0000ff" width="2"> + <coord x="0" y="0"/> + <coord x="0" y="0"/> + </polyline> + </itemgra> + <itemgra speed_range="3-"> + <polyline color="#0000ff" width="2"> + <coord x="-7" y="-10"/> + <coord x="0" y="12"/> + <coord x="7" y="-10"/> + </polyline> + </itemgra> + </cursor> + + <layer name="sea" details="0"> + <!-- landuse=forest --> + <itemgra item_types="poly_wood" order="0-"> + <polygon color="#72bf81"/> + </itemgra> + <itemgra item_types="poly_flats,poly_scrub,poly_military_zone,poly_marine,plantation,tundra" order="0-"> + <polygon color="#a0a0a0"/> + <text text_size="5"/> + </itemgra> + <!-- landuse=residential --> + <itemgra item_types="poly_town" order="0-"> + <polygon color="#f2f2f2"/> + </itemgra> + <!-- natural=water --> + <itemgra item_types="poly_water" order="0-"> + <polygon color="#b5d6f1"/> + <polyline color="#b5d6f1"/> + <text text_size="8"/> + </itemgra> + <!-- leisure=park --> + <itemgra item_types="poly_park" order="0-"> + <polygon color="#c7f1a3"/> + <polyline color="#79c691"/> + <text text_size="5"/> + </itemgra> + <itemgra item_types="poly_airport" order="0-"> + <polygon color="#a0a0a0"/> + </itemgra> + <itemgra item_types="poly_sport" order="0-"> + <polygon color="#4af04f"/> + </itemgra> + <!-- landuse=industrial --> + <itemgra item_types="poly_industry,poly_building,poly_place" order="0-"> + <polygon color="#ecd8ff"/> + </itemgra> + <!-- waterway=stream --> + <itemgra item_types="water_line" order="0-4"> + <polyline color="#b5d6f1" width="1"/> + <text text_size="8"/> + </itemgra> + <!-- railway=subway --> + <itemgra item_types="rail" order="6"> + <polyline color="#aaaaaa" width="1"/> + </itemgra> + <itemgra item_types="rail" order="7-8"> + <polyline color="#aaaaaa" width="2"/> + </itemgra> + <itemgra item_types="rail" order="9-"> + <polyline color="#aaaaaa" width="6"/> + </itemgra> + <itemgra item_types="ferry" order="5-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="border_country" order="0-"> + <polyline color="#b8434e" width="1"/> + </itemgra> + <itemgra item_types="border_state" order="0-"> + <polyline color="#808080" width="1"/> + </itemgra> + <itemgra item_types="height_line_1" order="0-"> + <polyline color="#000000" width="1"/> + </itemgra> + <itemgra item_types="height_line_2" order="0-"> + <polyline color="#000000" width="2"/> + </itemgra> + <!-- routing --> + <itemgra item_types="street_route" order="2"> + <polyline color="#0000a0" width="4"/> + </itemgra> + <itemgra item_types="street_route" order="3-5"> + <polyline color="#0000a0" width="8"/> + </itemgra> + <itemgra item_types="street_route" order="6"> + <polyline color="#0000a0" width="10"/> + </itemgra> + <itemgra item_types="street_route" order="7-8"> + <polyline color="#0000a0" width="16"/> + </itemgra> + <itemgra item_types="street_route" order="9-10"> + <polyline color="#0000a0" width="20"/> + </itemgra> + <itemgra item_types="street_route" order="11"> + <polyline color="#0000a0" width="28"/> + </itemgra> + <itemgra item_types="street_route" order="12"> + <polyline color="#0000a0" width="32"/> + </itemgra> + <itemgra item_types="street_route" order="13"> + <polyline color="#0000a0" width="52"/> + </itemgra> + <itemgra item_types="street_route" order="14"> + <polyline color="#0000a0" width="64"/> + </itemgra> + <itemgra item_types="street_route" order="15"> + <polyline color="#0000a0" width="68"/> + </itemgra> + <itemgra item_types="street_route" order="16"> + <polyline color="#0000a0" width="132"/> + </itemgra> + <itemgra item_types="street_route" order="17"> + <polyline color="#0000a0" width="268"/> + </itemgra> + <itemgra item_types="street_route" order="18"> + <polyline color="#0000a0" width="530"/> + </itemgra> + <!-- highway=service,footway, ,... --> + <itemgra item_types="street_pedestrian,living_street" order="10"> + <polyline color="#d2d2d2" width="3"/> + <polyline color="#dddddd" width="1"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="11"> + <polyline color="#d2d2d2" width="5"/> + <polyline color="#dddddd" width="3"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="12"> + <polyline color="#d2d2d2" width="8"/> + <polyline color="#dddddd" width="6"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="13"> + <polyline color="#d2d2d2" width="9"/> + <polyline color="#dddddd" width="7"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="14"> + <polyline color="#d2d2d2" width="13"/> + <polyline color="#dddddd" width="9"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="15"> + <polyline color="#d2d2d2" width="18"/> + <polyline color="#dddddd" width="14"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="16"> + <polyline color="#d2d2d2" width="21"/> + <polyline color="#dddddd" width="17"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="17"> + <polyline color="#d2d2d2" width="25"/> + <polyline color="#dddddd" width="21"/> + </itemgra> + <itemgra item_types="street_pedestrian,living_street" order="18"> + <polyline color="#d2d2d2" width="40"/> + <polyline color="#dddddd" width="34"/> + </itemgra> + <itemgra item_types="street_nopass" order="10"> + <polyline color="#efeaa0" width="1"/> + </itemgra> + <itemgra item_types="street_nopass" order="11-12"> + <polyline color="#efeaa0" width="2"/> + </itemgra> + <itemgra item_types="street_nopass" order="13-"> + <polyline color="#efeaa0" width="4"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="10"> + <polyline color="#d2d2d2" width="4"/> + <polyline color="#ffffff" width="2"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="11"> + <polyline color="#d2d2d2" width="6"/> + <polyline color="#ffffff" width="4"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="12"> + <polyline color="#d2d2d2" width="10"/> + <polyline color="#ffffff" width="8"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="13"> + <polyline color="#d2d2d2" width="12"/> + <polyline color="#ffffff" width="9"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="14"> + <polyline color="#d2d2d2" width="15"/> + <polyline color="#ffffff" width="13"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="15"> + <polyline color="#d2d2d2" width="17"/> + <polyline color="#ffffff" width="14"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="16"> + <polyline color="#d2d2d2" width="33"/> + <polyline color="#ffffff" width="26"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="17"> + <polyline color="#d2d2d2" width="69"/> + <polyline color="#ffffff" width="61"/> + </itemgra> + <itemgra item_types="street_0,street_1_city,street_1_land" order="18"> + <polyline color="#d2d2d2" width="132"/> + <polyline color="#ffffff" width="126"/> + </itemgra> + <!-- highway=tertiary --> + <itemgra item_types="street_2_city,street_2_land" order="7-8"> + <polyline color="#c4c4c4" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="9"> + <polyline color="#c4c4c4" width="4"/> + <polyline color="#f7f496" width="2"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="10"> + <polyline color="#c4c4c4" width="6"/> + <polyline color="#f7f496" width="4"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="11"> + <polyline color="#c4c4c4" width="8"/> + <polyline color="#f7f496" width="6"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="12"> + <polyline color="#c4c4c4" width="12"/> + <polyline color="#f7f496" width="9"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="13"> + <polyline color="#c4c4c4" width="15"/> + <polyline color="#f7f496" width="11"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="14"> + <polyline color="#c4c4c4" width="18"/> + <polyline color="#f7f496" width="14"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="15"> + <polyline color="#c4c4c4" width="21"/> + <polyline color="#f7f496" width="17"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="16"> + <polyline color="#c4c4c4" width="35"/> + <polyline color="#f7f496" width="30"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="17"> + <polyline color="#c4c4c4" width="73"/> + <polyline color="#f7f496" width="67"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land" order="18"> + <polyline color="#c4c4c4" width="144"/> + <polyline color="#f7f496" width="138"/> + </itemgra> + <!-- highway=secondary --> + <itemgra item_types="street_3_city,street_3_land,ramp" order="7"> + <polyline color="#fdbf6f" width="1"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="8"> + <polyline color="#000000" width="2"/> + <polyline color="#fdbf6f" width="1"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="9"> + <polyline color="#000000" width="5"/> + <polyline color="#fdbf6f" width="3"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="10"> + <polyline color="#000000" width="8"/> + <polyline color="#fdbf6f" width="6"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="11"> + <polyline color="#000000" width="9"/> + <polyline color="#fdbf6f" width="7"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="12"> + <polyline color="#000000" width="11"/> + <polyline color="#fdbf6f" width="9"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="13"> + <polyline color="#000000" width="16"/> + <polyline color="#fdbf6f" width="14"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="14"> + <polyline color="#000000" width="19"/> + <polyline color="#fdbf6f" width="17"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="15"> + <polyline color="#000000" width="23"/> + <polyline color="#fdbf6f" width="21"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="16"> + <polyline color="#000000" width="36"/> + <polyline color="#fdbf6f" width="34"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="17"> + <polyline color="#000000" width="75"/> + <polyline color="#fdbf6f" width="73"/> + </itemgra> + <itemgra item_types="street_3_city,street_3_land,ramp" order="18"> + <polyline color="#000000" width="152"/> + <polyline color="#fdbf6f" width="150"/> + </itemgra> + <!-- highway=primary --> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="2-6"> + <polyline color="#e46d71" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="7-8"> + <polyline color="#e46d71" width="3"/> + <polyline color="#e46d71" width="1"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="9"> + <polyline color="#e46d71" width="5"/> + <polyline color="#e46d71" width="3"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10"> + <polyline color="#e46d71" width="6"/> + <polyline color="#e46d71" width="4"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="11"> + <polyline color="#e46d71" width="9"/> + <polyline color="#e46d71" width="7"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="12"> + <polyline color="#e46d71" width="13"/> + <polyline color="#e46d71" width="9"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="13"> + <polyline color="#e46d71" width="18"/> + <polyline color="#e46d71" width="14"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="14"> + <polyline color="#e46d71" width="21"/> + <polyline color="#e46d71" width="17"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="15"> + <polyline color="#e46d71" width="24"/> + <polyline color="#e46d71" width="20"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="16"> + <polyline color="#e46d71" width="39"/> + <polyline color="#e46d71" width="33"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="17"> + <polyline color="#e46d71" width="78"/> + <polyline color="#e46d71" width="72"/> + </itemgra> + <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="18"> + <polyline color="#e46d71" width="156"/> + <polyline color="#e46d71" width="150"/> + </itemgra> + <!-- highway=motorway --> + <itemgra item_types="highway_city,highway_land" order="2"> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="3-5"> + <polyline color="#87908a" width="3"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="6"> + <polyline color="#87908a" width="4"/> + <polyline color="#809bc0" width="2"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="7-8"> + <polyline color="#87908a" width="7"/> + <polyline color="#809bc0" width="5"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="9-10"> + <polyline color="#87908a" width="9"/> + <polyline color="#809bc0" width="5"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="11"> + <polyline color="#87908a" width="13"/> + <polyline color="#809bc0" width="9"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="12"> + <polyline color="#87908a" width="15"/> + <polyline color="#809bc0" width="10"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="13"> + <polyline color="#87908a" width="25"/> + <polyline color="#809bc0" width="17"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="14"> + <polyline color="#87908a" width="31"/> + <polyline color="#809bc0" width="24"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="15"> + <polyline color="#87908a" width="33"/> + <polyline color="#809bc0" width="27"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="16"> + <polyline color="#87908a" width="65"/> + <polyline color="#809bc0" width="59"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="17"> + <polyline color="#87908a" width="133"/> + <polyline color="#809bc0" width="127"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_city,highway_land" order="18"> + <polyline color="#87908a" width="264"/> + <polyline color="#809bc0" width="258"/> + <polyline color="#809bc0" width="1"/> + </itemgra> + <itemgra item_types="highway_exit_label" order="10-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- highway=primary (font)--> + <itemgra item_types="highway_city,highway_land,street_4_city,street_4_land,street_n_lanes,living_street" order="10-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="street_2_city,street_2_land,street_3_city,street_3_land,ramp" order="11-18"> + <text text_size="9"/> + </itemgra> + <itemgra item_types="street_nopass,street_0,street_1_city,street_1_land,footway" order="12-18"> + <text text_size="9"/> + </itemgra> + <!-- place=suburb --> + <itemgra item_types="town_label,district_label,town_label_0e0,town_label_1e0,town_label_2e0,town_label_5e0,town_label_1e1,town_label_2e1,town_label_5e1,town_label_1e2,town_label_2e2,town_label_5e2,district_label_0e0,district_label_1e0,district_label_2e0,district_label_5e0,district_label_1e1,district_label_2e1,district_label_5e1,district_label_1e2,district_label_2e2,district_label_5e2" order="9-"> + <circle color="#000000" radius="3" text_size="9"/> + </itemgra> + <itemgra item_types="district_label_1e3,district_label_2e3,district_label_5e3" order="11-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_1e3,town_label_2e3,town_label_5e3,place_label" order="10-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e4,district_label_2e4,district_label_5e4" order="9-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="town_label_1e4,town_label_2e4,town_label_5e4" order="8-"> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="district_label_1e5,district_label_2e5,district_label_5e5" order="6-"> + <circle color="#000000" radius="3" text_size="10"/> + </itemgra> + <!-- place=city --> + <itemgra item_types="town_label_1e5,town_label_2e5,town_label_5e5" order="4-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="district_label_1e6,district_label_2e6,district_label_5e6" order="3-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e6,town_label_2e6,town_label_5e6" order="2-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="town_label_1e7,district_label_1e7" order="1-"> + <circle color="#000000" radius="3" text_size="15"/> + </itemgra> + <itemgra item_types="rg_point" order="0-"> + <circle color="#FF089C" radius="10"/> + </itemgra> + + <itemgra item_types="waypoint,route_end" order="2"> + <circle color="#008080" radius="4" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="3-5"> + <circle color="#008080" radius="8" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="6"> + <circle color="#008080" radius="10" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="7-8"> + <circle color="#008080" radius="16" width="2" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="9-10"> + <circle color="#008080" radius="20" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="11"> + <circle color="#008080" radius="28" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="12"> + <circle color="#008080" radius="32" width="4" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="13"> + <circle color="#008080" radius="52" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="14"> + <circle color="#008080" radius="64" width="4" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="15"> + <circle color="#008080" radius="68" width="6" text_size="24"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="16"> + <circle color="#008080" radius="132" width="8" text_size="32"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="17"> + <circle color="#008080" radius="268" width="8" text_size="48"/> + </itemgra> + <itemgra item_types="waypoint,route_end" order="18"> + <circle color="#008080" radius="530" width="8" text_size="48"/> + </itemgra> + + <!-- !!!!...POIs...!!!! --> + <!-- amenity=bank --> + <itemgra item_types="poi_bank" order="14-"> + <icon src="bank.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <itemgra item_types="poi_atm" order="12-"> + <icon src="atm.svg"/> + </itemgra> + <!-- amenity=fuel --> + <itemgra item_types="poi_fuel" order="14-"> + <icon src="fuel.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- amenity=hospitalg --> + <itemgra item_types="poi_hospital" order="14-"> + <icon src="hospital.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- amenity=parking --> + <itemgra item_types="poi_car_parking" order="14-"> + <icon src="parking.svg"/> + </itemgra> + <!-- amenity=police --> + <itemgra item_types="poi_police" order="14-"> + <icon src="police.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- amenity=restaurant --> + <itemgra item_types="poi_restaurant" order="14-"> + <icon src="restaurant.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- leisure=golf_curse --> + <itemgra item_types="poi_golf" order="14-"> + <icon src="golf.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + <!-- tourism=hotel --> + <itemgra item_types="poi_hotel" order="14-"> + <icon src="hotel.svg"/> + <circle color="#000000" radius="3" text_size="7"/> + </itemgra> + </layer> + <layer name="Found items" ref="Found items"/> + </layout> + <layout name="Route"> + <layer name="streets"> + <itemgra item_types="street_route_occluded" order="0-"> + <polyline color="#0000a0" width="20"/> + </itemgra> + </layer> + </layout> + </navit> +</config> diff --git a/contrib/sailfish/say_de_DE.sh b/contrib/sailfish/say_de_DE.sh new file mode 100755 index 000000000..bba4aa4fc --- /dev/null +++ b/contrib/sailfish/say_de_DE.sh @@ -0,0 +1,2 @@ +#!/bin/sh +espeak -s150 -a 200 -vde "$1" --stdout | paplay diff --git a/contrib/tomtom/espeakdsp.c b/contrib/tomtom/espeakdsp.c new file mode 100644 index 000000000..bd6689a1f --- /dev/null +++ b/contrib/tomtom/espeakdsp.c @@ -0,0 +1,101 @@ +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/soundcard.h> +#include <sys/wait.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <libgen.h> + +#define espeakpath "/mnt/sdcard/navit/bin/espeak" +#define IBUFFERLEN 1024 +#define MAXARGC 30 + + +int main(int argc, char *argv[],char *envp[]) +{ + int pipefd[2]; + pid_t cpid; + char buf; + int co,wp,l,fh; + short bufi[IBUFFERLEN],bufo[IBUFFERLEN*2]; + int rate=22050; + + char *newargv[MAXARGC+2]; + + for(co=0;co<argc;co++) + { + if(co>=MAXARGC)break; + newargv[co]=argv[co]; + } + newargv[co++]="--stdout"; + newargv[co++]=NULL; + + if (pipe(pipefd) == -1) + { + perror("pipe"); + exit(EXIT_FAILURE); + } + + if(setpriority(PRIO_PROCESS,0,-10)) + perror ("setpriority"); + + cpid = fork(); + if (cpid == -1) + { + perror("fork"); + exit(EXIT_FAILURE); + } + + if (cpid == 0) + { /* Child writes to pipe */ + + close(pipefd[0]); /* Close unused read end */ + dup2(pipefd[1],1); + execve(espeakpath,newargv,envp); + perror(espeakpath); + close(pipefd[1]); /* Reader will see EOF */ + wait(NULL); /* Wait for child */ + exit(EXIT_SUCCESS); + + } else { /* Parent read from pipe */ + + close(pipefd[1]); /* Close unused write end */ + + l=read(pipefd[0],bufi,64); + if(memcmp(bufi,"RIFF",4)) + { + while(l>0) + { + write(1,bufi,l); + l=read(pipefd[0],bufi,IBUFFERLEN); + } + exit(EXIT_SUCCESS); + } + l=read(pipefd[0],bufi,IBUFFERLEN); + + fh=open("/dev/dsp",O_WRONLY); + if(fh<0) + { + perror("open /dev/dsp"); + exit(EXIT_FAILURE); + } + ioctl(fh, SNDCTL_DSP_SPEED , &rate); + ioctl(fh, SNDCTL_DSP_SYNC, 0); + while(l) + { + for(co=0,wp=0;(co<IBUFFERLEN)&&(co<l);co++) + { + bufo[wp++]=bufi[co]; /* mono->stereo */ + bufo[wp++]=bufi[co]; + } + write (fh,bufo,wp); + l=read(pipefd[0],bufi,IBUFFERLEN); + } + ioctl(fh, SNDCTL_DSP_SYNC, 0); + close(pipefd[0]); + exit(EXIT_SUCCESS); + } +} diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index ceb2ca3c9..886dc1227 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -1 +1,5 @@ -INSTALL(FILES maptool.1 navit.1 DESTINATION ${MAN_DIR}) +INSTALL(FILES maptool.1 DESTINATION ${MAN_DIR}) +if(NOT DEFINED NAVIT_BINARY) + set(NAVIT_BINARY navit) +endif() +INSTALL(FILES navit.1 DESTINATION ${MAN_DIR} RENAME ${NAVIT_BINARY}.1) diff --git a/man/Makefile.am b/man/Makefile.am deleted file mode 100644 index 44d6c2d5e..000000000 --- a/man/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -dist_man_MANS=maptool.1 navit.1 diff --git a/navit/CMakeLists.txt b/navit/CMakeLists.txt index 292d03723..16138491e 100644 --- a/navit/CMakeLists.txt +++ b/navit/CMakeLists.txt @@ -81,7 +81,9 @@ if(NOT ANDROID) endif() add_executable(navit ${NAVIT_START_SRC}) target_link_libraries (navit ${NAVIT_LIBNAME}) - set_target_properties(navit PROPERTIES COMPILE_DEFINITIONS "MODULE=${MODULE_NAME}") + if(DEFINED NAVIT_BINARY) + set_target_properties(navit PROPERTIES OUTPUT_NAME ${NAVIT_BINARY}) + endif(DEFINED NAVIT_BINARY) if (BUILD_BUNDLE) add_custom_command(OUTPUT resources/share COMMAND mkdir -p resources/share) set_source_files_properties(resources/share resources/Icon.png resources/Default.png PROPERTIES MACOSX_PACKAGE_LOCATION Resources) diff --git a/navit/Makefile.am b/navit/Makefile.am deleted file mode 100644 index 16cb81d58..000000000 --- a/navit/Makefile.am +++ /dev/null @@ -1,248 +0,0 @@ -include $(top_srcdir)/Makefile.inc -comma=, -SUBDIRS=fib-1.1 support -if PLUGINS - SUBDIRS += . -endif -DIST_SUBDIRS=autoload binding map maptool fib-1.1 font fonts gui graphics osd plugin speech support vehicle xpm maps -SUBDIRS+=autoload binding map font gui graphics osd plugin speech vehicle xpm - -MODULES = $(wildcard $(top_builddir)/navit/binding/*/*.la $(top_builddir)/navit/font/*/*.la $(top_builddir)/navit/graphics/*/*.la $(top_builddir)/navit/gui/*/*.la $(top_builddir)/navit/map/*/*.la $(top_builddir)/navit/osd/*/*.la $(top_builddir)/navit/speech/*/*.la $(top_builddir)/navit/vehicle/*/*.la) - -if FONTS - SUBDIRS += fonts -endif -if !PLUGINS - SUBDIRS += . -endif - -if MAPTOOL - SUBDIRS += maptool -endif - -if BUILD_SAMPLEMAP - SUBDIRS += maps -endif - - -AM_CPPFLAGS = -I$(top_srcdir)/navit/fib-1.1 @NAVIT_CFLAGS@ @ZLIB_CFLAGS@ -DPREFIX=\"@prefix@\" -DLIBDIR=\"@libdir@\" -DMODULE=navit -BUILT_SOURCES = version.h navit_config.h - -if BIN_NAVIT - bin_PROGRAMS = navit -endif - -if SHARED_LIBNAVIT - lib_LTLIBRARIES = lib@LIBNAVIT@.la - lib@LIBNAVIT@_la_LDFLAGS = -avoid-version @MODULE_LDFLAGS@ @NAVIT_SOCKET_LDFLAGS@ -no-undefined -Wl,--no-undefined -else - noinst_LTLIBRARIES = lib@LIBNAVIT@.la -endif -lib@LIBNAVIT@_la_LIBADD = @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @INTLLIBS@ -Lfib-1.1 -lfib @MODULE_LIBADD@ @CRYPTO_LIBS@ - -if SUPPORT_WIN32CE - lib@LIBNAVIT@_la_LIBADD += -Lsupport/libc -lsupport_libc -endif - -pkgdata_DATA = navit.xml - -EXTRA_DIST = navit_shipped.xml navit.dtd - -lib@LIBNAVIT@_la_SOURCES = announcement.c atom.c attr.c cache.c callback.c command.c config_.c coord.c country.c data_window.c debug.c \ - event.c event_glib.h file.c geom.c graphics.c gui.c item.c layout.c log.c main.c map.c maps.c \ - linguistics.c mapset.c maptype.c menu.c messages.c bookmarks.c bookmarks.h navit.c navigation.c osd.c param.c phrase.c plugin.c popup.c \ - profile.c profile_option.c projection.c roadprofile.c route.c search.c search_houseno_interpol.c script.c speech.c start_real.c \ - transform.c track.c util.c vehicle.c vehicleprofile.c xmlconfig.c \ - announcement.h atom.h attr.h attr_def.h cache.h callback.h color.h command.h config_.h coord.h country.h \ - android.h data.h data_window.h data_window_int.h debug.h destination.h draw_info.h endianess.h event.h \ - file.h geom.h graphics.h gtkext.h gui.h item.h item_def.h keys.h log.h layer.h layout.h linguistics.h main.h map-share.h map.h\ - map_data.h mapset.h maptype.h menu.h messages.h navigation.h navit.h osd.h \ - param.h phrase.h plugin.h point.h plugin_def.h projection.h popup.h route.h profile.h roadprofile.h search.h search_houseno_interpol.h \ - speech.h start_real.h transform.h track.h types.h util.h vehicle.h vehicleprofile.h window.h xmlconfig.h zipfile.h \ - navit_lfs.h navit_nls.c navit_nls.h sunriset.c sunriset.h glib_slice.h - -XSLTS=@XSLTS@ -navit.xml: navit_shipped.xml $(foreach xslt, $(subst $(comma), ,$(XSLTS)), $(addsuffix .xslt,$(addprefix xslt/,$(xslt)))) navit_android_xml - cp $< navit.xml.new - if [ ! -f navit.dtd ]; then cp -f $(top_srcdir)/navit/navit.dtd .; fi - for i in $^; do if [ "$${i%.xslt}" != "$$i" ]; then echo "Applying $$i" ; @SAXON@ -snone navit.xml.new $$i >navit.xml.tmp || exit ; mv -f navit.xml.tmp navit.xml.new || exit ; fi ; done - mv -f navit.xml.new navit.xml - rm -f navit.xml.tmp - -navit_android_xml: navit_shipped.xml -if SUPPORT_ANDROID -# new android xml files for (mdpi,ldpi,hdpi) - cp $(srcdir)/navit_shipped.xml navit_android.xml.new - if [ ! -f navit.dtd ]; then cp -f $(top_srcdir)/navit/navit.dtd .; fi - -# # now apply any other xslt files (this would allow for pedestrian plugin) -# for i in $(foreach xslt, $(subst $(comma), ,$(XSLTS)), $(addsuffix .xslt,$(addprefix xslt/,$(xslt)))); do if [ "$${i%.xslt}" != "$$i" ]; then j=`basename $$i` ; if [ "$$j" != "android.xslt" ] ; then echo "Android: Applying $$i" ; @SAXON@ -snone navit_android.xml.new $(srcdir)/"$$i" >navit_android.xml.new.tmp || exit ; mv navit_android.xml.new.tmp navit_android.xml.new || exit ; fi ; fi ; done -# # for now disable pedestrian plugin (zoff99) - - @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_mdpi.xslt >navit_android_mdpi.xml.tmp - @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_ldpi.xslt >navit_android_ldpi.xml.tmp - @SAXON@ -snone navit_android.xml.new $(srcdir)/xslt/android_hdpi.xslt >navit_android_hdpi.xml.tmp - rm -f navit_android.xml.new - rm -f navit_android.xml.new.tmp - mv -f navit_android_mdpi.xml.tmp navit_android_mdpi.xml - mv -f navit_android_ldpi.xml.tmp navit_android_ldpi.xml - mv -f navit_android_hdpi.xml.tmp navit_android_hdpi.xml - rm -f navit_android_mdpi.xml.tmp - rm -f navit_android_ldpi.xml.tmp - rm -f navit_android_hdpi.xml.tmp -else - echo "no Android support" -endif - -if SUPPORT_ANDROID - lib@LIBNAVIT@_la_SOURCES += android.c - navit_SOURCES = - navit_LDADD = - -v_int = $$(cat $(srcdir)/android/Android_Market_Version_int.txt|grep v_int|cut -d ":" -f 2) -v_name = "0.5.0-"$$(LANG=C svnversion $(top_srcdir) 2> /dev/null|tr -d ":A-Z" 2> /dev/null) - -android/AndroidManifest.xml: android/AndroidManifest.xml.in - mkdir -p $(builddir)/android - sed '0,/<uses-sdk/!d' <$< >$@ - for i in $(subst $(comma), ,@ANDROID_PERMISSIONS@); do echo " <uses-permission android:name=\"android.permission.$$i\" />" >>$@; done - sed '0,/<uses-sdk/d' <$< >>$@ - sed -e "s/@ANDROID_VERSION_INT@/$(v_int)/" <$@ >android/AndroidManifest.xml.tmp - mv -f android/AndroidManifest.xml.tmp $@ - sed -e "s/@ANDROID_VERSION_NAME@/$(v_name)/" <$@ >android/AndroidManifest.xml.tmp - mv -f android/AndroidManifest.xml.tmp $@ - -android/build.xml: android/AndroidManifest.xml android/dummy.txt -# this is needed, otherwise somehow the files cant be deleted - mkdir -p $(builddir)/android/src/ - if [ "$(builddir)" != "$(srcdir)" ]; then chmod -R u+w $(builddir)/android/src/; fi - if [ "$(builddir)" != "$(srcdir)" ]; then rm -Rf $(builddir)/android/src/; fi - if [ "$(builddir)" != "$(srcdir)" ]; then cp -rpf $(srcdir)/android/* $(builddir)/android; fi - touch $(srcdir)/android/dummy.txt - touch $(builddir)/android/dummy.txt - android update project -t @ANDROID_PROJECT@ -p android - -apkg-all: all android/build.xml navit.xml - mkdir -p android/libs/armeabi - cp .libs/*.so android/libs/armeabi/libnavit.so - for i in */*/.libs/*.so ; do sed 's&lib_data_data_org\.navitproject\.navit_lib_&/data/data/org.navitproject.navit/lib/lib&' <$$i >android/libs/armeabi/$$(basename $$i); done - - for i in $(shell cd $(srcdir)/../po && echo ??_*.po.in ??.po.in); do echo Gnerating strings.xml from $$i ; mkdir -p $(builddir)/android/res/values-$$(echo $$i | sed -e s/\\.po\\.in// -e s/_/-r/) ; @SAXON@ $(srcdir)/android/res/values/strings.xml $(srcdir)/android/po2xml.xslt po_file=$(abs_top_srcdir)/po/$$i >$(builddir)/android/res/values-$$(echo $$i | sed -e s/\\.po\\.in// -e s/_/-r/)/strings.xml ; done - - mkdir -p android/res/drawable-ldpi - mkdir -p android/res/drawable-mdpi - mkdir -p android/res/drawable-hdpi - for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert $(srcdir)/xpm/$$i android/res/drawable-mdpi/$${i%.xpm}.png; done - for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert -resize 75% $(srcdir)/xpm/$$i android/res/drawable-ldpi/$${i%.xpm}.png; done - for i in $(shell cd $(srcdir)/xpm && echo *.xpm); do convert -resize 150% $(srcdir)/xpm/$$i android/res/drawable-hdpi/$${i%.xpm}.png; done - -# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done -# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done -# for i in $(shell cd $(srcdir)/xpm && echo *.png); do cp $(srcdir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done - - for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert $(srcdir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done - for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert -resize 75% $(srcdir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done - for i in $(shell cd $(srcdir)/xpm && echo *.png); do convert -resize 150% $(srcdir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done - -# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi -# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi -# if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do cp $(builddir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi - - if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert $(builddir)/xpm/$$i android/res/drawable-mdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi - if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert -resize 75% $(builddir)/xpm/$$i android/res/drawable-ldpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi - if [ "$(builddir)" != "$(srcdir)" ]; then for i in $(shell cd $(builddir)/xpm && echo *.png); do convert -resize 150% $(builddir)/xpm/$$i android/res/drawable-hdpi/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done ; fi - - mkdir -p android/res/raw - for i in $(shell cd ../po && echo *.mo); do cp ../po/$$i android/res/raw/$$( echo $$i | tr "[A-Z]" "[a-z]") ; done -# cp navit.xml android/res/raw - cp navit_android_mdpi.xml android/res/raw/navitmdpi.xml - cp navit_android_ldpi.xml android/res/raw/navitldpi.xml - cp navit_android_hdpi.xml android/res/raw/navithdpi.xml - -apkg: apkg-all - touch $(srcdir)/android/dummy.txt - touch $(builddir)/android/dummy.txt - cd android && ant debug - -apkg-release: apkg-all - touch $(srcdir)/android/dummy.txt - touch $(builddir)/android/dummy.txt - cd android && ant release - jarsigner $$(cat ~/.keystore_args) android/bin/Navit-unsigned.apk mykey -# zipalign -f 4 android/bin/Navit-unsigned.apk android/bin/Navit-unsigned-aligned.apk -else -navit_SOURCES = start.c -navit_LDADD = lib@LIBNAVIT@.la - -endif - -if EVENT_GLIB - lib@LIBNAVIT@_la_SOURCES += event_glib.c -endif - -navit_LDFLAGS = -export-dynamic - -if !PLUGINS - lib@LIBNAVIT@_la_SOURCES += builtin.c - lib@LIBNAVIT@_la_LIBADD += $(MODULES) -endif - - -navit_LDADD += @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @CRYPTO_LIBS@ @INTLLIBS@ - - -if SUPPORT_WIN32 - navit_LDADD += resource.rsc -if SUPPORT_WIN32CE - navit_LDADD += -lcommctrl -Lsupport/libc -else - navit_LDADD += -lgdi32 -lcomctl32 -lwinmm -endif - - -resource.rsc: $(top_srcdir)/navit/gui/win32/resources/resource.rc - $(WINDRES) -I $(top_srcdir)/navit/gui/win32/resources $(top_srcdir)/navit/gui/win32/resources/resource.rc resource.rsc -endif - -.PHONY: version.h.tmp - -version.h.tmp: - echo "#include \"config.h\"" >version.h.tmp -if SOURCE_MODE_SVN - echo "#define SVN_VERSION \"$$(LANG=C svnversion $(top_srcdir) 2>/dev/null)\"" >>version.h.tmp -else - echo "#define SVN_VERSION \"@SOURCE_MODE@\"" >>version.h.tmp -endif - echo "#define GIT_VERSION \"$(shell git describe --abbrev=8 --dirty --always --tags)\"" >>version.h.tmp - echo "#define NAVIT_VARIANT \"@NAVIT_VARIANT@\"" >>version.h.tmp - if ! diff version.h.tmp version.h >/dev/null 2>/dev/null; \ - then \ - mv -f version.h.tmp version.h; \ - fi - -version.h: version.h.tmp - -navit_config.h: ../config.h - cp ../config.h navit_config.h.tmp - if ! diff navit_config.h.tmp navit_config.h >/dev/null 2>/dev/null; \ - then \ - mv -f navit_config.h.tmp navit_config.h; \ - fi - - -distclean-local: - rm -f version.h version.h.tmp navit_config.h navit_config.h.tmp builtin.c support-builtin.c navit.xml resurce.rsc - if [ "$(top_builddir)" != "$(top_srcdir)" ]; then rm -f navit.dtd; fi - -builtin.c: $(top_builddir)/config.h - ls $(top_builddir)/navit/*/*/*.la | sed -e "s/\.la/_init(void);/" -e "s/.*lib/extern void module_/" >builtin.c - echo "extern void builtin_init(void);" >>builtin.c - echo "void builtin_init(void) {" >>builtin.c - ls $(top_builddir)/navit/*/*/*.la | grep -v shapefile | sed -e "s/\.la/_init();/" -e "s/.*\\/lib/ module_/" >>builtin.c - echo "}" >>builtin.c -support-builtin.c: $(top_builddir)/config.h - ls $(top_builddir)/navit/support/*/*.la | sed -e "s/\.la/_init(void);/" -e "s/.*lib/extern void module_/" >support-builtin.c - echo "extern void builtin_init(void);" >>support-builtin.c - echo "void builtin_init(void) {" >>support-builtin.c - ls $(top_builddir)/navit/support/*/*.la | sed -e "s/\.la/_init();/" -e "s/.*\\/lib/ module_/" >>support-builtin.c - echo "}" >>support-builtin.c diff --git a/navit/android/AndroidManifest.xml.cmake b/navit/android/AndroidManifest.xml.cmake index b5bd757cb..7aa882bb8 100644 --- a/navit/android/AndroidManifest.xml.cmake +++ b/navit/android/AndroidManifest.xml.cmake @@ -37,5 +37,15 @@ <activity android:name=".NavitDownloadSelectMapActivity"></activity> <activity android:name=".NavitAddressResultListActivity"></activity> <activity android:name=".FileBrowserActivity"></activity> + <activity + android:name="org.acra.dialog.CrashReportDialog" + android:theme="@android:style/Theme.Dialog" + android:launchMode="singleInstance" + android:excludeFromRecents="true" + android:finishOnTaskLaunch="true"/> + <service + android:name="org.acra.sender.SenderService" + android:exported="false" + android:process=":acra" /> </application> </manifest> diff --git a/navit/android/AndroidManifest.xml.in b/navit/android/AndroidManifest.xml.in deleted file mode 100644 index 085276623..000000000 --- a/navit/android/AndroidManifest.xml.in +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="org.navitproject.navit" - android:sharedUserId="org.navitproject.navit" - android:versionCode="@ANDROID_VERSION_INT@" - android:versionName="@ANDROID_VERSION_NAME@" - android:installLocation="auto"> - <application android:label="@string/app_name" - android:icon="@drawable/icon" - android:name=".NavitAppConfig" - android:theme="@style/NavitTheme"> - <activity android:name="Navit" - android:label="@string/app_name" - android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - <category android:name="android.intent.category.DEFAULT" /> - <data android:scheme="google.navigation" /> - </intent-filter> - </activity> - <activity android:name=".NavitAddressSearchActivity"></activity> - <activity android:name=".NavitDownloadSelectMapActivity"></activity> - <activity android:name=".NavitAddressResultListActivity"></activity> - <activity android:name=".FileBrowserActivity"></activity> - </application> - <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19"/> - <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" android:anyDensity="true"/> - <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> - <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - <uses-permission android:name="android.permission.WAKE_LOCK" /> - <uses-permission android:name="android.permission.INTERNET" /> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> -</manifest> diff --git a/navit/android/libs/acra-4.3.0b2.jar b/navit/android/libs/acra-4.3.0b2.jar Binary files differdeleted file mode 100644 index 259a69581..000000000 --- a/navit/android/libs/acra-4.3.0b2.jar +++ /dev/null diff --git a/navit/android/libs/acra-4.8.5.jar b/navit/android/libs/acra-4.8.5.jar Binary files differnew file mode 100644 index 000000000..f0044ece8 --- /dev/null +++ b/navit/android/libs/acra-4.8.5.jar diff --git a/navit/android/libs/android-support-v4.jar b/navit/android/libs/android-support-v4.jar Binary files differnew file mode 100644 index 000000000..aa0b1a5cc --- /dev/null +++ b/navit/android/libs/android-support-v4.jar diff --git a/navit/android/res/values/strings.xml b/navit/android/res/values/strings.xml index 0aadefa7e..3a730e807 100644 --- a/navit/android/res/values/strings.xml +++ b/navit/android/res/values/strings.xml @@ -76,5 +76,9 @@ <!-- TTS --> <string name="TTS_title_data_missing">System text to speech engine data is missing</string> <string name="TTS_qery_install_data">Navit can use any text to speech engine installed on your device. The currently selected engine reports it is unable to speak in your language. Should we ask the system to show voice download dialog?</string> + + <!-- Permissions dialog--> + <string name="permissions_not_granted">Navit needs permission to access GPS and read the map.\nIf you change your mind please restart Navit and grant the permissions</string> + <string name="permissions_info_box_title">One or more ungranted permissions</string> </resources> diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java index c8578df07..a0e252dfe 100644 --- a/navit/android/src/org/navitproject/navit/Navit.java +++ b/navit/android/src/org/navitproject/navit/Navit.java @@ -55,6 +55,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Point;
+import android.Manifest;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
@@ -62,6 +63,8 @@ import android.os.Bundle; import android.os.Environment;
import android.os.Message;
import android.os.PowerManager;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
@@ -115,6 +118,7 @@ public class Navit extends Activity static final String FIRST_STARTUP_FILE = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";
public static final String NAVIT_PREFS = "NavitPrefs";
Boolean isFullscreen = false;
+ private static final int MY_PERMISSIONS_REQUEST_ALL = 101;
/**
@@ -303,8 +307,8 @@ public class Navit extends Activity PendingIntent appIntent = PendingIntent.getActivity(getApplicationContext(), 0, getIntent(), 0);
// FIXME : needs a fix for sdk 23
// NavitNotification.setLatestEventInfo(getApplicationContext(), "Navit", getString(R.string.notification_event_default), appIntent); // Set the text in the notification
- NavitNotification.flags|=Notification.FLAG_ONGOING_EVENT; // Ensure that the notification appears in Ongoing
- nm.notify(R.string.app_name, NavitNotification); // Set the notification
+// NavitNotification.flags|=Notification.FLAG_ONGOING_EVENT; // Ensure that the notification appears in Ongoing
+// nm.notify(R.string.app_name, NavitNotification); // Set the notification
// Status and navigation bar sizes
// These are platform defaults and do not change with rotation, but we have to figure out which ones apply
@@ -318,11 +322,16 @@ public class Navit extends Activity status_bar_height = (shid > 0) ? resources.getDimensionPixelSize(shid) : 0;
action_bar_default_height = (adhid > 0) ? resources.getDimensionPixelSize(adhid) : 0;
navigation_bar_height = (nhid > 0) ? resources.getDimensionPixelSize(nhid) : 0;
- navigation_bar_height_landscape = (nhid > 0) ? resources.getDimensionPixelSize(nhlid) : 0;
+ navigation_bar_height_landscape = (nhlid > 0) ? resources.getDimensionPixelSize(nhlid) : 0;
navigation_bar_width = (nwid > 0) ? resources.getDimensionPixelSize(nwid) : 0;
Log.d(TAG, String.format("status_bar_height=%d, action_bar_default_height=%d, navigation_bar_height=%d, navigation_bar_height_landscape=%d, navigation_bar_width=%d",
status_bar_height, action_bar_default_height, navigation_bar_height, navigation_bar_height_landscape, navigation_bar_width));
-
+ if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)||
+ (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
+ Log.d (TAG,"ask for permission(s)");
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION},MY_PERMISSIONS_REQUEST_ALL);
+ }
// get the local language -------------
Locale locale = java.util.Locale.getDefault();
String lang = locale.getLanguage();
@@ -481,7 +490,40 @@ public class Navit extends Activity show_soft_keyboard_now_showing = true;
}
}
-
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_ALL: {
+ if (grantResults.length > 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED
+ && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+ // ok, we got permissions
+ } else {
+ AlertDialog.Builder infobox = new AlertDialog.Builder(this);
+ infobox.setTitle(getString(R.string.permissions_info_box_title)); // TRANS
+ infobox.setCancelable(false);
+ final TextView message = new TextView(this);
+ message.setFadingEdgeLength(20);
+ message.setVerticalFadingEdgeEnabled(true);
+ RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
+ message.setLayoutParams(rlp);
+ final SpannableString s = new SpannableString(getString(R.string.permissions_not_granted)); // TRANS
+ message.setText(s);
+ message.setMovementMethod(LinkMovementMethod.getInstance());
+ infobox.setView(message);
+ // TRANS
+ infobox.setPositiveButton(getString(R.string.initial_info_box_OK), new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface arg0, int arg1) {
+ exit();
+ }
+ });
+ infobox.show();
+ }
+ return;
+ }
+ }
+ }
+
private void parseNavigationURI(String schemeSpecificPart) {
String naviData[]= schemeSpecificPart.split("&");
Pattern p = Pattern.compile("(.*)=(.*)");
@@ -864,8 +906,8 @@ public class Navit extends Activity public void exit()
{
- NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- nm.cancel(R.string.app_name);
+// NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+// nm.cancel(R.string.app_name);
NavitVehicle.removeListener();
NavitDestroy();
}
diff --git a/navit/android/src/org/navitproject/navit/NavitAppConfig.java b/navit/android/src/org/navitproject/navit/NavitAppConfig.java index 32f003f18..13ccc9bb4 100755 --- a/navit/android/src/org/navitproject/navit/NavitAppConfig.java +++ b/navit/android/src/org/navitproject/navit/NavitAppConfig.java @@ -8,10 +8,14 @@ import org.navitproject.navit.NavitAddressSearchActivity.NavitAddress; import android.app.Application;
import android.content.SharedPreferences;
import android.util.Log;
-
+import org.acra.*;
import org.acra.annotation.*;
-@ReportsCrashes(formKey = "dGlrNVRIOVVKYjB0UGVoLUZPanlzWFE6MQ")
+//@ReportsCrashes(formKey = "dGlrNVRIOVVKYjB0UGVoLUZPanlzWFE6MQ")
+@ReportsCrashes(mailTo = "android@navit-project.org",
+ mode = ReportingInteractionMode.TOAST,
+ resToastText = R.string.app_name)
+
public class NavitAppConfig extends Application {
private static final int MAX_LAST_ADDRESSES = 10;
diff --git a/navit/attr_def.h b/navit/attr_def.h index 19814a540..2a53f97cd 100644 --- a/navit/attr_def.h +++ b/navit/attr_def.h @@ -188,7 +188,7 @@ ATTR_UNUSED ATTR_UNUSED ATTR_UNUSED ATTR_UNUSED -ATTR_UNUSED +ATTR(hide_impossible_next_keys) ATTR(turn_around_count) ATTR(turn_around_penalty) ATTR(turn_around_penalty2) @@ -284,8 +284,8 @@ ATTR_UNUSED ATTR_UNUSED ATTR_UNUSED ATTR(window_title) -ATTR_UNUSED -ATTR_UNUSED +ATTR(qt5_platform) +ATTR(qt5_widget) /* poi */ ATTR_UNUSED ATTR(info_html) diff --git a/navit/autoload/Makefile.am b/navit/autoload/Makefile.am deleted file mode 100644 index 4ca10b6fa..000000000 --- a/navit/autoload/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -SUBDIRS= -if USE_OSSO - SUBDIRS += osso -endif - -DIST_SUBDIRS= osso diff --git a/navit/autoload/osso/Makefile.am b/navit/autoload/osso/Makefile.am deleted file mode 100644 index bb965beb3..000000000 --- a/navit/autoload/osso/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @LIBOSSO_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=plugin_osso -moduleautoload_LTLIBRARIES = libplugin_osso.la -libplugin_osso_la_LDFLAGS=-module -avoid-version @NAVIT_MODULE_LDFLAGS@ @LIBOSSO_LIBS@ #-Wl,--no-undefined - -libplugin_osso_la_SOURCES = osso.c diff --git a/navit/binding/Makefile.am b/navit/binding/Makefile.am deleted file mode 100644 index 6b782b48a..000000000 --- a/navit/binding/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -SUBDIRS= -if BINDING_PYTHON - SUBDIRS+=python -endif -if BINDING_DBUS - SUBDIRS+=dbus -endif - -if BINDING_WIN32 - SUBDIRS+=win32 -endif - - -DIST_SUBDIRS=python dbus win32 - diff --git a/navit/binding/dbus/Makefile.am b/navit/binding/dbus/Makefile.am deleted file mode 100644 index 1e6334291..000000000 --- a/navit/binding/dbus/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=binding_dbus -modulebinding_LTLIBRARIES = libbinding_dbus.la -libbinding_dbus_la_SOURCES = binding_dbus.c -libbinding_dbus_la_LIBADD = @DBUS_LIBS@ -libbinding_dbus_la_LDFLAGS = -module -avoid-version - -servicedir = @DBUS_SERVICE_DIR@ -service_in_files = org.navit_project.navit.service.in -service_DATA = $(service_in_files:.service.in=.service) - -$(service_DATA): $(service_in_files) Makefile - sed -e "s|\@bindir\@|$(bindir)|" $< > $@ - -EXTRA_DIST = $(service_in_files) - -distclean-local: - rm -f $(service_DATA) diff --git a/navit/binding/python/Makefile.am b/navit/binding/python/Makefile.am deleted file mode 100644 index a71632317..000000000 --- a/navit/binding/python/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @PYTHON_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=binding_python -modulebinding_LTLIBRARIES = libbinding_python.la -libbinding_python_la_SOURCES = binding_python.c config.c navit.c pcoord.c route.c navigation.c attr.c common.h -libbinding_python_la_LIBADD = @PYTHON_LIBS@ -libbinding_python_la_LDFLAGS = -module -avoid-version diff --git a/navit/binding/win32/Makefile.am b/navit/binding/win32/Makefile.am deleted file mode 100644 index f25c28d3e..000000000 --- a/navit/binding/win32/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = -I$(top_srcdir)/navit -I$(top_srcdir)/navit/binding/win32 @NAVIT_CFLAGS@ -DMODULE=binding_win32 -if PLUGINS -modulebinding_LTLIBRARIES = libbinding_win32.la -else -noinst_LTLIBRARIES = libbinding_win32.la -endif -libbinding_win32_la_SOURCES = binding_win32.c binding_win32.h -libbinding_win32_la_LIBADD = -libbinding_win32_la_LDFLAGS = -module -avoid-version -bin_PROGRAMS=tell_navit -tell_navit_LDADD = @NAVIT_LIBS@ -if SUPPORT_WIN32CE - tell_navit_LDADD += -L$(top_builddir)/navit/support/libc -lsupport_libc -endif diff --git a/navit/event.c b/navit/event.c index 667e5bdc3..5aee40689 100644 --- a/navit/event.c +++ b/navit/event.c @@ -77,6 +77,15 @@ event_remove_watch(struct event_watch *ev) event_methods.remove_watch(ev); } +/** + * Add an event timeout + * + * @param the timeout itself in msec + * @param multi 0 means that the timeout will fire only once, 1 means that it will repeat + * @param the callback to call when the timeout expires + * + * @returns the result of the event_methods.add_timeout() call + */ struct event_timeout * event_add_timeout(int timeout, int multi, struct callback *cb) { diff --git a/navit/fib-1.1/Makefile.am b/navit/fib-1.1/Makefile.am deleted file mode 100644 index 7c7b2a130..000000000 --- a/navit/fib-1.1/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -noinst_LTLIBRARIES = libfib.la -libfib_la_SOURCES = fib.c fib.h fibpriv.h -EXTRA_DIST=README configure.in fh_extractmin.3 fh_makeheap.3 fh_makekeyheap.3 fibtest.c fibtest2.c tt.c use.c diff --git a/navit/font/Makefile.am b/navit/font/Makefile.am deleted file mode 100644 index 620280e6f..000000000 --- a/navit/font/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS= -if FONT_FREETYPE - SUBDIRS+=freetype -endif diff --git a/navit/font/freetype/Makefile.am b/navit/font/freetype/Makefile.am deleted file mode 100644 index 4c081e391..000000000 --- a/navit/font/freetype/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @FREETYPE2_CFLAGS@ @FONTCONFIG_CFLAGS@ @FRIBIDI2_CFLAGS@ @FRIBIDI_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=font_freetype -if PLUGINS - modulefont_LTLIBRARIES = libfont_freetype.la -else - noinst_LTLIBRARIES = libfont_freetype.la -endif -libfont_freetype_la_SOURCES = font_freetype.c font_freetype.h -libfont_freetype_la_LDFLAGS = @FREETYPE2_LIBS@ @FONTCONFIG_LIBS@ @FRIBIDI2_LIBS@ @FRIBIDI_LIBS@ -module -avoid-version diff --git a/navit/fonts/Makefile.am b/navit/fonts/Makefile.am deleted file mode 100644 index d8ea2633b..000000000 --- a/navit/fonts/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -include $(top_srcdir)/Makefile.inc - -fonts_DATA = -fonts_DATA += LiberationMono-Bold.ttf -fonts_DATA += LiberationMono-BoldItalic.ttf -fonts_DATA += LiberationMono-Italic.ttf -fonts_DATA += LiberationMono-Regular.ttf -fonts_DATA += LiberationSans-Bold.ttf -fonts_DATA += LiberationSans-BoldItalic.ttf -fonts_DATA += LiberationSans-Italic.ttf -fonts_DATA += LiberationSans-Regular.ttf -fonts_DATA += LiberationSerif-Bold.ttf -fonts_DATA += LiberationSerif-BoldItalic.ttf -fonts_DATA += LiberationSerif-Italic.ttf -fonts_DATA += LiberationSerif-Regular.ttf diff --git a/navit/graphics/Makefile.am b/navit/graphics/Makefile.am deleted file mode 100644 index c878b9a35..000000000 --- a/navit/graphics/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -SUBDIRS= -if GRAPHICS_ANDROID - SUBDIRS+=android -endif -if GRAPHICS_GTK_DRAWING_AREA - SUBDIRS+=gtk_drawing_area -endif -if GRAPHICS_NULL - SUBDIRS+=null -endif -if GRAPHICS_OPENGL - SUBDIRS+=opengl -endif -if GRAPHICS_QT_QPAINTER - SUBDIRS+=qt_qpainter -endif -if GRAPHICS_SDL - SUBDIRS+=sdl -endif -if GRAPHICS_WIN32 - SUBDIRS+=win32 -endif -if GRAPHICS_GD - SUBDIRS+=gd -endif diff --git a/navit/graphics/android/Makefile.am b/navit/graphics/android/Makefile.am deleted file mode 100644 index a625edd1c..000000000 --- a/navit/graphics/android/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_android -if PLUGINS -modulegraphics_LTLIBRARIES = libgraphics_android.la -else -noinst_LTLIBRARIES = libgraphics_android.la -endif -libgraphics_android_la_SOURCES = graphics_android.c -libgraphics_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/graphics/egl/CMakeLists.txt b/navit/graphics/egl/CMakeLists.txt new file mode 100644 index 000000000..1943f2bc0 --- /dev/null +++ b/navit/graphics/egl/CMakeLists.txt @@ -0,0 +1,2 @@ +module_add_library(graphics_egl graphics_egl.c) + diff --git a/navit/graphics/egl/graphics_egl.c b/navit/graphics/egl/graphics_egl.c new file mode 100644 index 000000000..4d7780ff4 --- /dev/null +++ b/navit/graphics/egl/graphics_egl.c @@ -0,0 +1,1458 @@ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2010 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <unistd.h> +#include <math.h> +#include <stdio.h> + +#include <time.h> + +#include "item.h" +#include "attr.h" +#include "config.h" +#include "point.h" +#include "graphics.h" +#include "color.h" +#include "plugin.h" +#include "event.h" +#include "debug.h" +#include "callback.h" +#include "keys.h" +#include "window.h" +#include "navit/font/freetype/font_freetype.h" + +#include <SDL2/SDL_image.h> +#include <GLES2/gl2.h> +#include <EGL/egl.h> + +/* + * This is work in progress * + * Remainng issues : + * - SDL mouse cursor sometimes raise an SDL assertion + * - Dashed lines to implement + * - Full Keyboard handling +*/ + +#define SCREEN_WIDTH 800 +#define SCREEN_HEIGHT 600 + +#define glF(x) x +#define glD(x) x +#define GL_F GL_FLOAT +typedef GLfloat GLf; + +struct graphics_gc_priv { + struct graphics_priv *gr; + float fr, fg, fb, fa; + float br, bg, bb, ba; + int linewidth; + unsigned char *dash_list; + int dash_count; + int dash_mask; +} graphics_gc_priv; + +struct graphics_priv { + int fill_poly; + int show_overlays; + int button_timeout; + struct point p; + int width; + int height; + int library_init; + int visible; + int overlay_enabled; + int overlay_autodisabled; + int wraparound; + GLuint framebuffer_name; + GLuint overlay_texture; + struct graphics_priv *parent; + struct graphics_priv *overlays; + struct graphics_priv *next; + struct graphics_gc_priv *background_gc; + enum draw_mode_num mode; + GLuint program; + GLint mvp_location, position_location, color_location, texture_position_location, use_texture_location, texture_location; + struct callback_list *cbl; + struct font_freetype_methods freetype_methods; + struct navit *nav; + int timeout; + int delay; + struct window window; + int dirty; //display needs to be redrawn (draw on root graphics or overlay is done) + int force_redraw; //display needs to be redrawn (draw on root graphics or overlay is done) + time_t last_refresh_time; //last display refresh time + struct graphics_opengl_platform *platform; + struct graphics_opengl_platform_methods *platform_methods; +}; + +struct graphics_image_priv { + SDL_Surface *img; +} graphics_image_priv; + + +struct graphics_opengl_platform { + SDL_Window* eglwindow; + SDL_GLContext eglcontext; + EGLDisplay egldisplay; + EGLConfig config[1]; +}; + +struct contour +{ + struct point *p; + unsigned int count; +}; + +static GHashTable *hImageData; +static int USERWANTSTOQUIT = 0; +static struct graphics_priv *graphics_priv_root; +static struct graphics_priv *graphics_opengl_new_helper(struct + graphics_methods + *meth); + +/* + * GLES 2 Compatible vertex and fragment shaders + * Taken from opengl driver + */ +const char vertex_src [] = +" \ + attribute vec2 position; \ + attribute vec2 texture_position; \ + uniform mat4 mvp; \ + varying vec2 v_texture_position; \ + \ + void main() \ + { \ + v_texture_position=texture_position; \ + gl_Position = mvp*vec4(position, 0.0, 1.0); \ + } \ +"; + +const char fragment_src [] = +" \ + uniform lowp vec4 avcolor; \ + uniform sampler2D texture; \ + uniform bool use_texture; \ + varying vec2 v_texture_position; \ + void main() \ + { \ + if (use_texture) { \ + gl_FragColor = texture2D(texture, v_texture_position); \ + } else { \ + gl_FragColor = avcolor; \ + } \ + } \ +"; + +/* +* C conversion of Efficient Polygon Triangulation +* Found at http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml +* Adapted and debugged for this use +*/ +float area(const struct contour* contour) +{ + int p, q; + int n = contour->count - 1; + float A = 0.f; + + for (p=n-1, q=0; q < n; p=q++) + { + A += contour->p[p].x * contour->p[q].y - contour->p[q].x * contour->p[p].y; + } + return A * .5f; +} + +int +inside_triangle(float Ax, float Ay, + float Bx, float By, + float Cx, float Cy, + float Px, float Py) +{ + float ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy; + float cCROSSap, bCROSScp, aCROSSbp; + + ax = Cx - Bx; ay = Cy - By; + bx = Ax - Cx; by = Ay - Cy; + cx = Bx - Ax; cy = By - Ay; + apx= Px - Ax; apy= Py - Ay; + bpx= Px - Bx; bpy= Py - By; + cpx= Px - Cx; cpy= Py - Cy; + + aCROSSbp = ax*bpy - ay*bpx; + cCROSSap = cx*apy - cy*apx; + bCROSScp = bx*cpy - by*cpx; + + return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f)); +} + +int +snip(const struct point* pnt,int u,int v,int w,int n,int *V) +{ + int p; + float Ax, Ay, Bx, By, Cx, Cy, Px, Py; + + Ax = pnt[V[u]].x; + Ay = pnt[V[u]].y; + + Bx = pnt[V[v]].x; + By = pnt[V[v]].y; + + Cx = pnt[V[w]].x; + Cy = pnt[V[w]].y; + + if ( (((Bx-Ax)*(Cy-Ay)) - ((By-Ay)*(Cx-Ax))) < 0.f ) + return 0; + + for (p=0;p<n;p++) + { + if( (p == u) || (p == v) || (p == w) ) + continue; + Px = pnt[V[p]].x; + Py = pnt[V[p]].y; + if (inside_triangle(Ax,Ay,Bx,By,Cx,Cy,Px,Py)) + return 0; + } + + return 1; +} + +int +process_triangles(const struct contour* contour, struct contour* result) +{ + int v; + int contour_size = contour->count - 1; + int polygon_temp_size = contour_size * 80; + int final_count = 0; + result->p = malloc(sizeof(struct point) * polygon_temp_size); + + int n = contour_size; + if ( n < 3 ) return 0; + + int *V = alloca(sizeof(int)*n); + + if ( 0.0f < area(contour) ) + for (v=0; v<n; v++) V[v] = v; + else + for(v=0; v<n; v++) V[v] = (n-1)-v; + + int nv = n; + + int count = 2*nv; + + for(v=nv-1; nv>2; ) + { + /* if we loop, it is probably a non-simple polygon */ + if (0 >= (count--)) + { + //** Triangulate: ERROR - probable bad polygon! + break; + } + + /* three consecutive vertices in current polygon, <u,v,w> */ + int u = v ; if (nv <= u) u = 0; /* previous */ + v = u+1; if (nv <= v) v = 0; /* new v */ + int w = v+1; if (nv <= w) w = 0; /* next */ + + if ( snip(contour->p,u,v,w,nv,V) ) + { + int a,b,c,s,t; + + /* true names of the vertices */ + a = V[u]; b = V[v]; c = V[w]; + + /* output Triangle */ + result->p[final_count++] = contour->p[a]; + result->p[final_count++] = contour->p[b]; + result->p[final_count++] = contour->p[c]; + + if (final_count >= polygon_temp_size){ + free(result->p); + return 0; + } + + /* remove v from remaining polygon */ + for(s=v,t=v+1;t<nv;s++,t++) + V[s] = V[t]; + nv--; + + /* resest error detection counter */ + count = 2*nv; + } + } + + result->count = final_count; + + return 1; +} + +// ** Efficient Polygon Triangulation ** + +/* + * Destroys SDL/EGL context + */ +static void +sdl_egl_destroy(struct graphics_opengl_platform *egl) +{ + if (egl->eglwindow){ + SDL_GL_DeleteContext(egl->eglcontext); + SDL_DestroyWindow(egl->eglwindow); + } + g_free(egl); + SDL_Quit(); +} + +/* + * Swap EGL buffer + */ +static void +sdl_egl_swap_buffers(struct graphics_opengl_platform *egl) +{ + SDL_GL_SwapWindow(egl->eglwindow); +} + +/* + * Main graphic destroy + */ +static void +graphics_destroy(struct graphics_priv *gr) +{ + /*FIXME graphics_destroy is never called */ + gr->freetype_methods.destroy(); + g_free(gr); + gr = NULL; + sdl_egl_destroy(gr->platform); + SDL_Quit(); +} + +static void +gc_destroy(struct graphics_gc_priv *gc) +{ + g_free(gc); + gc = NULL; +} + +static void +gc_set_linewidth(struct graphics_gc_priv *gc, int w) +{ + gc->linewidth = w; +} + +static void +gc_set_dashes(struct graphics_gc_priv *gc, int width, int offset, + unsigned char *dash_list, int n) +{ + int i; + const int cOpenglMaskBits = 16; + gc->dash_count = n; + if (1 == n) { + gc->dash_mask = 0; + for (i = 0; i < cOpenglMaskBits; ++i) { + gc->dash_mask <<= 1; + gc->dash_mask |= (i / n) % 2; + } + } else if (1 < n) { + unsigned char *curr = dash_list; + int cnt = 0; //dot counter + int dcnt = 0; //dash element counter + int sum_dash = 0; + gc->dash_mask = 0; + + for (i = 0; i < n; ++i) { + sum_dash += dash_list[i]; + } + + //scale dashlist elements to max size + if (sum_dash > cOpenglMaskBits) { + int num_error[2] = { 0, 0 }; //count elements rounded to 0 for odd(drawn) and even(masked) for compensation + double factor = (1.0 * cOpenglMaskBits) / sum_dash; + for (i = 0; i < n; ++i) { //calculate dashlist max and largest common denomiator for scaling + dash_list[i] *= factor; + if (dash_list[i] == 0) { + ++dash_list[i]; + ++num_error[i % 2]; + } else if (0 < num_error[i % 2] + && 2 < dash_list[i]) { + ++dash_list[i]; + --num_error[i % 2]; + } + } + } + //calculate mask + for (i = 0; i < cOpenglMaskBits; ++i) { + gc->dash_mask <<= 1; + gc->dash_mask |= 1 - dcnt % 2; + ++cnt; + if (cnt == *curr) { + cnt = 0; + ++curr; + ++dcnt; + if (dcnt == n) { + curr = dash_list; + } + } + } + } +} + + +static void +gc_set_foreground(struct graphics_gc_priv *gc, struct color *c) +{ + gc->fr = c->r / 65535.0; + gc->fg = c->g / 65535.0; + gc->fb = c->b / 65535.0; + gc->fa = c->a / 65535.0; +} + +static void +gc_set_background(struct graphics_gc_priv *gc, struct color *c) +{ + gc->br = c->r / 65535.0; + gc->bg = c->g / 65535.0; + gc->bb = c->b / 65535.0; + gc->ba = c->a / 65535.0; +} + +static struct graphics_gc_methods gc_methods = { + gc_destroy, + gc_set_linewidth, + gc_set_dashes, + gc_set_foreground, + gc_set_background +}; + +static struct graphics_gc_priv * +gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth) +{ + struct graphics_gc_priv *gc = g_new0(struct graphics_gc_priv, 1); + + *meth = gc_methods; + gc->gr = gr; + gc->linewidth = 1; + return gc; +} + +static struct graphics_image_priv image_error; + +static struct graphics_image_priv * +image_new(struct graphics_priv *gr, struct graphics_image_methods *meth, char *name, int *w, int *h, + struct point *hot, int rotation) +{ + struct graphics_image_priv *gi; + + /* FIXME: meth is not used yet.. so gi leaks. at least xpm is small */ + + struct graphics_image_priv *curr_elem = + g_hash_table_lookup(hImageData, name); + + if (curr_elem == &image_error) { + //found but couldn't be loaded + return NULL; + } else if (curr_elem) { + //found and OK -> use hastable entry + *w = curr_elem->img->w; + *h = curr_elem->img->h; + hot->x = *w / 2; + hot->y = *h / 2; + return curr_elem; + } + + if (strlen(name) < 4) { + g_hash_table_insert(hImageData, g_strdup(name), + &image_error); + return NULL; + } + + gi = g_new0(struct graphics_image_priv, 1); + gi->img = IMG_Load(name); + if(gi->img) + { + *w=gi->img->w; + *h=gi->img->h; + hot->x=*w/2; + hot->y=*h/2; + } + else + { + /* TODO: debug "colour parse errors" on xpm */ + dbg(lvl_error,"image_new on '%s' failed: %s\n", name, IMG_GetError()); + g_free(gi); + gi = NULL; + g_hash_table_insert(hImageData, + g_strdup(name), + &image_error); + return gi; + } + + g_hash_table_insert(hImageData, g_strdup(name), gi); + return gi; +} + +static void +image_free(struct graphics_priv *gr, struct graphics_image_priv * gi) +{ +// SDL_FreeSurface(gi->img); +// g_free(gi); +} + +static void +set_color(struct graphics_priv *gr, struct graphics_gc_priv *gc) +{ + GLfloat col[4]; + col[0]=gc->fr; + col[1]=gc->fg; + col[2]=gc->fb; + col[3]=gc->fa; + glUniform4fv(gr->color_location, 1, col); +} + +static void +draw_array(struct graphics_priv *gr, struct point *p, int count, GLenum mode) +{ + int i; + GLf *x;//[count*2]; + x = alloca(sizeof(GLf)*count*2); + for (i = 0 ; i < count ; i++) { + x[i*2]=glF(p[i].x); + x[i*2+1]=glF(p[i].y); + } + + glVertexAttribPointer (gr->position_location, 2, GL_FLOAT, 0, 0, x ); + glDrawArrays(mode, 0, count); +} + +static void +draw_rectangle_do(struct graphics_priv *gr, struct point *p, int w, int h) +{ + struct point pa[4]; + pa[0]=pa[1]=pa[2]=pa[3]=*p; + pa[0].x+=w; + pa[1].x+=w; + pa[1].y+=h; + pa[3].y+=h; + draw_array(gr, pa, 4, GL_TRIANGLE_STRIP); +} + + +static void +draw_image_es(struct graphics_priv *gr, struct point *p, int w, int h, unsigned char *data) +{ + GLf x[8]; + GLuint texture; + memset(x, 0, sizeof(x)); + + glGenTextures(1, &texture); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + + x[0]+=glF(1); + x[2]+=glF(1); + x[3]+=glF(1); + x[7]+=glF(1); + glUniform1i(gr->use_texture_location, 1); + glEnableVertexAttribArray(gr->texture_position_location); + glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x ); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + draw_rectangle_do(gr, p, w, h); + + glUniform1i(gr->use_texture_location, 0); + glDisableVertexAttribArray(gr->texture_position_location); + + glDisable(GL_BLEND); + glDeleteTextures(1, &texture); +} + +inline void +get_overlay_pos(struct graphics_priv *gr, struct point *point_out) +{ + if (gr->parent == NULL) { + point_out->x = 0; + point_out->y = 0; + return; + } + point_out->x = gr->p.x; + if (point_out->x < 0) { + point_out->x += gr->parent->width; + } + + point_out->y = gr->p.y; + if (point_out->y < 0) { + point_out->y += gr->parent->height; + } +} + +inline void +draw_overlay(struct graphics_priv *gr) +{ + struct point p_eff; + GLf x[8]; + + get_overlay_pos(gr, &p_eff); + + memset(x, 0, 8*sizeof(GLf)); + x[0]+=glF(1); + x[1]+=glF(1); + x[2]+=glF(1); + x[5]+=glF(1); + + glUniform1i(gr->use_texture_location, 1); + glEnableVertexAttribArray(gr->texture_position_location); + glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture(GL_TEXTURE_2D, gr->overlay_texture); + + draw_rectangle_do(graphics_priv_root, &p_eff, gr->width, gr->height); + + glUniform1i(gr->use_texture_location, 0); + glDisableVertexAttribArray(gr->texture_position_location); + + glDisable(GL_BLEND); +} + +static void +draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, + struct point *p, int count) +{ + if ((gr->parent && !gr->parent->overlay_enabled) + || (gr->parent && gr->parent->overlay_enabled + && !gr->overlay_enabled)) { + return; + } + + glLineWidth(gc->linewidth); + + set_color(gr, gc); + graphics_priv_root->dirty = 1; + + draw_array(gr, p, count, GL_LINE_STRIP); +} + + +static void +draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, + struct point *p, int count) +{ + int ok; + if ((gr->parent && !gr->parent->overlay_enabled) + || (gr->parent && gr->parent->overlay_enabled + && !gr->overlay_enabled)) { + return; + } + set_color(gr, gc); + graphics_priv_root->dirty = 1; + struct contour contour, result; + contour.count = count; + contour.p = p; + ok = process_triangles(&contour, &result); + if (ok && gr->fill_poly){ + draw_array(gr, result.p, result.count, GL_TRIANGLES); + free(result.p); + } else { + draw_array(gr, p, count, GL_LINE_STRIP); + } +} + +static void +draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, + struct point *p, int w, int h) +{ + if ((gr->parent && !gr->parent->overlay_enabled) + || (gr->parent && gr->parent->overlay_enabled + && !gr->overlay_enabled)) { + return; + } + set_color(gr, gc); + draw_rectangle_do(gr, p, w, h); + graphics_priv_root->dirty = 1; +} + +static void +display_text_draw(struct font_freetype_text *text, + struct graphics_priv *gr, struct graphics_gc_priv *fg, + struct graphics_gc_priv *bg, int color, struct point *p) +{ + int i, x, y, stride; + struct font_freetype_glyph *g, **gp; + unsigned char *shadow, *glyph; + struct color transparent = { 0x0000, 0x0000, 0x0000, 0x0000 }; + struct color black = + { fg->fr * 65535, fg->fg * 65535, fg->fb * 65535, + fg->fa * 65535 }; + struct color white = { 0xffff, 0xffff, 0xffff, 0xffff }; + + if (bg) { + if (COLOR_IS_WHITE(black) && COLOR_IS_BLACK(white)) { + black.r = 65535; + black.g = 65535; + black.b = 65535; + black.a = 65535; + + white.r = 0; + white.g = 0; + white.b = 0; + white.a = 65535; + } else if (COLOR_IS_BLACK(black) && COLOR_IS_WHITE(white)) { + white.r = 65535; + white.g = 65535; + white.b = 65535; + white.a = 65535; + + black.r = 0; + black.g = 0; + black.b = 0; + black.a = 65535; + } else { + white.r = bg->fr; + white.g = bg->fg; + white.b = bg->fb; + white.a = bg->fa; + } + } else { + white.r = 0; + white.g = 0; + white.b = 0; + white.a = 0; + } + + gp = text->glyph; + i = text->glyph_count; + x = p->x << 6; + y = p->y << 6; + while (i-- > 0) { + g = *gp++; + if (g->w && g->h && bg) { + stride = (g->w + 2) * 4; + if (color) { + shadow = g_malloc(stride * (g->h + 2)); + gr->freetype_methods.get_shadow(g, shadow, + stride, + &white, + &transparent); + + struct point p; + p.x=((x + g->x) >> 6)-1; + p.y=((y + g->y) >> 6)-1; + draw_image_es(gr, &p, g->w+2, g->h+2, shadow); + + g_free(shadow); + } + } + x += g->dx; + y += g->dy; + } + + x = p->x << 6; + y = p->y << 6; + gp = text->glyph; + i = text->glyph_count; + while (i-- > 0) { + g = *gp++; + if (g->w && g->h) { + if (color) { + stride = g->w; + if (bg) { + glyph = + g_malloc(stride * g->h * 4); + gr->freetype_methods.get_glyph(g, + glyph, + stride + * 4, + &black, + &white, + &transparent); + struct point p; + p.x=(x + g->x) >> 6; + p.y=(y + g->y) >> 6; + draw_image_es(gr, &p, g->w, g->h, glyph); + + g_free(glyph); + } + stride *= 4; + glyph = g_malloc(stride * g->h); + gr->freetype_methods.get_glyph(g, glyph, + stride, + &black, + &white, + &transparent); + struct point p; + p.x=(x + g->x) >> 6; + p.y=(y + g->y) >> 6; + draw_image_es(gr, &p, g->w, g->h, glyph); + + g_free(glyph); + } + } + x += g->dx; + y += g->dy; + } +} + +static void +draw_text(struct graphics_priv *gr, struct graphics_gc_priv *fg, + struct graphics_gc_priv *bg, struct graphics_font_priv *font, + char *text, struct point *p, int dx, int dy) +{ + if ((gr->parent && !gr->parent->overlay_enabled) + || (gr->parent && gr->parent->overlay_enabled + && !gr->overlay_enabled)) { + return; + } + + struct font_freetype_text *t; + int color = 1; + + if (!font) { + dbg(lvl_error, "no font, returning\n"); + return; + } + graphics_priv_root->dirty = 1; + + t = gr->freetype_methods.text_new(text, + (struct font_freetype_font *) + font, dx, dy); + + struct point p_eff; + p_eff.x = p->x; + p_eff.y = p->y; + + display_text_draw(t, gr, fg, bg, color, &p_eff); + gr->freetype_methods.text_destroy(t); +} + + +static void +draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, + struct point *p, struct graphics_image_priv *img) +{ + draw_image_es(gr, p, img->img->w, img->img->h, img->img->pixels); +} + +static void +draw_drag(struct graphics_priv *gr, struct point *p) +{ + if (p) { + gr->p.x = p->x; + gr->p.y = p->y; + } +} + +static void +background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc) +{ + gr->background_gc = gc; +} + +/* + * Draws map in background + */ +static void +draw_background(struct graphics_priv *gr) +{ + struct point p_eff; + GLf x[8]; + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glViewport(0, 0, gr->width, gr->height); + //get_overlay_pos(gr, &p_eff); + p_eff.x = gr->p.x; + p_eff.y = gr->p.y; + + memset(x, 0, 8*sizeof(GLf)); + x[0]+=glF(1); + x[1]+=glF(1); + x[2]+=glF(1); + x[5]+=glF(1); + + glUniform1i(gr->use_texture_location, 1); + glEnableVertexAttribArray(gr->texture_position_location); + glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x); + + glDisable(GL_BLEND); + glBindTexture(GL_TEXTURE_2D, gr->overlay_texture); + + draw_rectangle_do(gr, &p_eff, gr->width, gr->height); + + glUniform1i(gr->use_texture_location, 0); + glDisableVertexAttribArray(gr->texture_position_location); +} + +/* + Drawing method : + Map and overlays are rendered in an offscreen buffer (See render to texture) + and are recomposed altogether at draw_mode_end request for root +*/ +static void +draw_mode(struct graphics_priv *gr, enum draw_mode_num mode) +{ + GLfloat matrix[16]; + struct graphics_priv *overlay = NULL; + int i; + + if (mode == draw_mode_begin){ + // Should not be necessary... + // SDL_GL_MakeCurrent(gr->platform->eglwindow, gr->platform->eglcontext); + + if (gr->parent == NULL){ + // Full redraw, reset drag position + gr->p.x = 0; + gr->p.y = 0; + } + + // Need to setup appropriate projection matrix + for (i = 0; i < 16 ; i++){ + matrix[i] = 0.0; + } + + matrix[0]=2.0 / gr->width; + matrix[5]=-2.0 / gr->height; + matrix[10]=1; + matrix[12]=-1; + matrix[13]=1; + matrix[15]=1; + glUniformMatrix4fv(gr->mvp_location, 1, GL_FALSE, matrix); + + glBindFramebuffer(GL_FRAMEBUFFER, gr->framebuffer_name); + glViewport(0,0,gr->width,gr->height); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + if (mode == draw_mode_end && gr->parent == NULL) { + overlay = gr->overlays; + draw_background(gr); + while(overlay){ + if (gr->overlay_enabled) + draw_overlay(overlay); + overlay = overlay->next; + } + sdl_egl_swap_buffers(gr->platform); + } + + gr->mode = mode; +} + +static int +graphics_opengl_fullscreen(struct window *w, int on) +{ + return 1; +} + +static void +graphics_opengl_disable_suspend(struct window *w) +{ + // No op +} + + +static GLuint +load_shader(const char *shader_source, GLenum type) +{ + GLuint shader = glCreateShader(type); + + glShaderSource(shader, 1, &shader_source, NULL); + glCompileShader(shader); + + return shader; +} + +static void * +get_data(struct graphics_priv *this, const char *type) +{ + GLuint vertexShader; + GLuint fragmentShader; + struct window* win; + int i; + + if (!strcmp(type, "gtk_widget")) { + fprintf(stderr, + "Currently GTK gui is not yet supported with EGL graphics driver\n"); + return NULL; + } + + if(strcmp(type, "window") == 0) { + SDL_GL_MakeCurrent(this->platform->eglwindow, this->platform->eglcontext); + + glClearColor ( 0 , 0 , 0 , 1); + glClear ( GL_COLOR_BUFFER_BIT ); + + callback_list_call_attr_2(graphics_priv_root->cbl, attr_resize, + GINT_TO_POINTER(this->width), GINT_TO_POINTER(this->height)); + + this->program = glCreateProgram(); + vertexShader = load_shader(vertex_src, GL_VERTEX_SHADER); + fragmentShader = load_shader(fragment_src, GL_FRAGMENT_SHADER); + + glAttachShader(this->program, vertexShader); + glAttachShader(this->program, fragmentShader); + glLinkProgram(this->program); + glUseProgram(this->program); + + this->mvp_location = glGetUniformLocation(this->program, "mvp"); + this->position_location = glGetAttribLocation(this->program, "position"); + glEnableVertexAttribArray(this->position_location); + this->texture_position_location = glGetAttribLocation(this->program, "texture_position"); + this->color_location = glGetUniformLocation(this->program, "avcolor"); + this->texture_location = glGetUniformLocation(this->program, "texture"); + this->use_texture_location = glGetUniformLocation(this->program, "use_texture"); + + glUniform1i(this->use_texture_location, 0); + glUniform1i(this->texture_location, 0); + + win=g_new(struct window, 1); + win->priv=this; + win->disable_suspend=NULL; + win->fullscreen = graphics_opengl_fullscreen; + win->disable_suspend = graphics_opengl_disable_suspend; + return win; + } + + return NULL; + +} + +static void +overlay_disable(struct graphics_priv *gr, int disable) +{ + gr->overlay_enabled = !disable; + gr->force_redraw = 1; + draw_mode(gr, draw_mode_end); +} + +// Need more testing +static void +overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, + int wraparound) +{ + int changed = 0; + int w2, h2; + + if (w == 0) { + w2 = 1; + } else { + w2 = w; + } + + if (h == 0) { + h2 = 1; + } else { + h2 = h; + } + + gr->p = *p; + if (gr->width != w2) { + gr->width = w2; + changed = 1; + } + + if (gr->height != h2) { + gr->height = h2; + changed = 1; + } + + gr->wraparound = wraparound; + + if (changed) { + if ((w == 0) || (h == 0)) { + gr->overlay_autodisabled = 1; + } else { + gr->overlay_autodisabled = 0; + // Reset overlay texture + glDeleteTextures(1, &gr->overlay_texture); + glGenTextures(1, &gr->overlay_texture); + glBindTexture(GL_TEXTURE_2D, gr->overlay_texture); + glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, gr->width, gr->height, 0,GL_RGBA, GL_UNSIGNED_BYTE, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gr->overlay_texture, 0); + } + + callback_list_call_attr_2(gr->cbl, attr_resize, + GINT_TO_POINTER(gr->width), + GINT_TO_POINTER(gr->height)); + } +} + + +static struct graphics_priv *overlay_new(struct graphics_priv *gr, + struct graphics_methods *meth, + struct point *p, int w, int h, + int wraparound); + +static struct graphics_methods graphics_methods = { + graphics_destroy, + draw_mode, + draw_lines, + draw_polygon, + draw_rectangle, + NULL, + draw_text, + draw_image, + NULL, + draw_drag, + NULL, + gc_new, + background_gc, + overlay_new, + image_new, + get_data, + image_free, + NULL, + overlay_disable, + overlay_resize, + NULL, /* set_attr, */ + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ +}; + +static struct graphics_priv * +graphics_opengl_new_helper(struct graphics_methods *meth) +{ + struct font_priv *(*font_freetype_new) (void *meth); + font_freetype_new = plugin_get_category_font("freetype"); + + if (!font_freetype_new) { + return NULL; + } + + struct graphics_priv *this = g_new0(struct graphics_priv, 1); + + font_freetype_new(&this->freetype_methods); + *meth = graphics_methods; + + meth->font_new = + (struct graphics_font_priv * + (*)(struct graphics_priv *, struct graphics_font_methods *, + char *, int, int)) this->freetype_methods.font_new; + meth->get_text_bbox = + (void (*) (struct graphics_priv *, struct graphics_font_priv *, + char *, int, int, struct point*, int)) this->freetype_methods.get_text_bbox; + return this; +} + +static void +create_framebuffer_texture(struct graphics_priv *gr) +{ + GLenum status; + // Prepare a new framebuffer object + glGenFramebuffers(1, &gr->framebuffer_name); + glBindFramebuffer(GL_FRAMEBUFFER, gr->framebuffer_name); + + glGenTextures(1, &gr->overlay_texture); + glBindTexture(GL_TEXTURE_2D, gr->overlay_texture); + glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, gr->width, gr->height, 0,GL_RGBA, GL_UNSIGNED_BYTE, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gr->overlay_texture, 0); + + status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + if (status != GL_FRAMEBUFFER_COMPLETE) { + printf("Error creating texture framebuffer for overlay, exiting.\n"); + SDL_Quit(); + exit(1); + } +} + +static struct graphics_priv * +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, + struct point *p, int w, int h, int wraparound) +{ + struct graphics_priv *this = graphics_opengl_new_helper(meth); + + this->p.x = p->x; + this->p.y = p->y; + + this->width = w; + this->height = h; + this->parent = gr; + this->overlays = NULL; + this->fill_poly = 1; + + // Copy shader locations parameters + this->mvp_location = graphics_priv_root->mvp_location; + this->position_location = graphics_priv_root->position_location; + this->texture_position_location = graphics_priv_root->texture_position_location; + this->color_location = graphics_priv_root->color_location; + this->texture_location = graphics_priv_root->texture_location; + this->use_texture_location = graphics_priv_root->use_texture_location; + + if ((w == 0) || (h == 0)) { + this->overlay_autodisabled = 1; + } else { + this->overlay_autodisabled = 0; + } + this->overlay_enabled = 1; + + this->next = gr->overlays; + gr->overlays = this; + + create_framebuffer_texture(this); + + return this; +} + + +static gboolean graphics_sdl_idle(void *data) +{ + struct graphics_priv *gr = (struct graphics_priv *)data; + struct point p; + SDL_Event ev; + int ret; + char key_mod = 0; + char keybuf[8]; + char keycode; + + // Process SDL events (KEYS + MOUSE) + while(1) + { + ret = SDL_PollEvent(&ev); + + if(!ret) + break; + + switch(ev.type) + { + case SDL_MOUSEMOTION: + { + p.x = ev.motion.x; + p.y = ev.motion.y; + //gr->force_redraw = 1; + callback_list_call_attr_1(gr->cbl, attr_motion, (void *)&p); + break; + } + + case SDL_KEYDOWN: + { + memset(keybuf, 0, sizeof(keybuf)); + switch(ev.key.keysym.sym) + { + case SDLK_F1: + graphics_priv_root->fill_poly = !graphics_priv_root->fill_poly; + break; + case SDLK_F2: + graphics_priv_root->show_overlays = !graphics_priv_root->show_overlays; + break; + case SDLK_LEFT: + { + keybuf[0] = NAVIT_KEY_LEFT; + break; + } + case SDLK_RIGHT: + { + keybuf[0] = NAVIT_KEY_RIGHT; + break; + } + case SDLK_BACKSPACE: + { + keybuf[0] = NAVIT_KEY_BACKSPACE; + break; + } + case SDLK_RETURN: + { + keybuf[0] = NAVIT_KEY_RETURN; + break; + } + case SDLK_DOWN: + { + keybuf[0] = NAVIT_KEY_DOWN; + break; + } + case SDLK_PAGEUP: + { + keybuf[0] = NAVIT_KEY_ZOOM_OUT; + break; + } + case SDLK_UP: + { + keybuf[0] = NAVIT_KEY_UP; + break; + } + case SDLK_PAGEDOWN: + { + keybuf[0] = NAVIT_KEY_ZOOM_IN; + break; + } + case SDLK_ESCAPE: + { + USERWANTSTOQUIT = 1; + break; + } + default: + { + /* return unicode chars when they can be converted to ascii */ + // Need more work... + keycode = ev.key.keysym.sym; + keybuf[0] = keycode <= 127 ? keycode : 0; + break; + } + } + if (keybuf[0]) { + callback_list_call_attr_1(gr->cbl, attr_keypress, (void *)keybuf); + } + break; + } + case SDL_KEYUP: + { + break; + } + case SDL_MOUSEBUTTONDOWN: + { + p.x = ev.button.x; + p.y = ev.button.y; + graphics_priv_root->force_redraw = 1; + callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER((int)ev.button.button), (void *)&p); + break; + } + + case SDL_MOUSEBUTTONUP: + { + p.x = ev.button.x; + p.y = ev.button.y; + callback_list_call_attr_3(gr->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER((int)ev.button.button), (void *)&p); + break; + } + + case SDL_QUIT: + { + break; + } + default: + { + break; + } + } + } + + if (USERWANTSTOQUIT){ + SDL_Quit(); + exit(0); + } + + return TRUE; +} + + +static struct graphics_priv * +graphics_opengl_new(struct navit *nav, struct graphics_methods *meth, + struct attr **attrs, struct callback_list *cbl) +{ + struct attr *attr; + if (!event_request_system("glib", "graphics_opengl_new")) + return NULL; + + hImageData = g_hash_table_new(g_str_hash, g_str_equal); + struct graphics_priv *this = graphics_opengl_new_helper(meth); + graphics_priv_root = this; + + this->nav = nav; + this->parent = NULL; + this->overlay_enabled = 1; + this->framebuffer_name = 0; + this->overlays = NULL; + this->fill_poly = 1; + this->show_overlays = 1; + + this->width = SCREEN_WIDTH; + if ((attr = attr_search(attrs, NULL, attr_w))) + this->width = attr->u.num; + this->height = SCREEN_HEIGHT; + if ((attr = attr_search(attrs, NULL, attr_h))) + this->height = attr->u.num; + this->timeout = 100; + if ((attr = attr_search(attrs, NULL, attr_timeout))) + this->timeout = attr->u.num; + this->delay = 0; + if ((attr = attr_search(attrs, NULL, attr_delay))) + this->delay = attr->u.num; + this->cbl = cbl; + + this->framebuffer_name = 0; + + graphics_priv_root->cbl = cbl; + graphics_priv_root->width = this->width; + graphics_priv_root->height = this->height; + + struct graphics_opengl_platform *ret=g_new0(struct graphics_opengl_platform,1); + + // SDL Init + int sdl_status = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_EVENTS); + + if (sdl_status != 0){ + fprintf(stderr, "\nUnable to initialize SDL: %i %s\n", sdl_status, SDL_GetError() ); + exit(1); + } + + Uint32 flags = SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN; + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0); + // I think it's not necessary to sync vblank, update is quite slow + SDL_GL_SetSwapInterval(0); + + ret->eglwindow = SDL_CreateWindow( + "Navit EGL", // window title + SDL_WINDOWPOS_UNDEFINED, // initial x position + SDL_WINDOWPOS_UNDEFINED, // initial y position + this->width, // width, in pixels + this->height, // height, in pixels + flags + ); + + if (ret->eglwindow == NULL) { + fprintf(stderr, "\nUnable to initialize SDL window: %s\n", SDL_GetError() ); + goto error; + } + + ret->eglcontext = SDL_GL_CreateContext(ret->eglwindow); + if (ret->eglcontext == NULL){ + printf("EGL context creation failed\n"); + goto error; + } + + this->platform = ret; + create_framebuffer_texture(this); + g_timeout_add(G_PRIORITY_DEFAULT+10, graphics_sdl_idle, this); + glDisable(GL_DEPTH_TEST); + return this; +error: + SDL_Quit(); + return NULL; +} + +void +plugin_init(void) +{ + plugin_register_category_graphics("egl", graphics_opengl_new); +} + diff --git a/navit/graphics/gd/Makefile.am b/navit/graphics/gd/Makefile.am deleted file mode 100644 index 67fc270ac..000000000 --- a/navit/graphics/gd/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @GD_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=graphics_gd -libgraphics_gd_la_LDFLAGS = @GD_LIBS@ -module -avoid-version -if PLUGINS -modulegraphics_LTLIBRARIES = libgraphics_gd.la -else -noinst_LTLIBRARIES = libgraphics_gd.la -endif -libgraphics_gd_la_SOURCES = graphics_gd.c diff --git a/navit/graphics/gtk_drawing_area/Makefile.am b/navit/graphics/gtk_drawing_area/Makefile.am deleted file mode 100644 index 79da228d7..000000000 --- a/navit/graphics/gtk_drawing_area/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @GTK2_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=graphics_gtk_drawing_area -modulegraphics_LTLIBRARIES = libgraphics_gtk_drawing_area.la -libgraphics_gtk_drawing_area_la_SOURCES = graphics_gtk_drawing_area.c -libgraphics_gtk_drawing_area_la_LDFLAGS = @GTK2_LIBS@ @IMLIB2_LIBS@ -module -avoid-version diff --git a/navit/graphics/null/Makefile.am b/navit/graphics/null/Makefile.am deleted file mode 100644 index a4631ff4a..000000000 --- a/navit/graphics/null/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_null -if PLUGINS -modulegraphics_LTLIBRARIES = libgraphics_null.la -else -noinst_LTLIBRARIES = libgraphics_null.la -endif -libgraphics_null_la_SOURCES = graphics_null.c -libgraphics_null_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/graphics/opengl/Makefile.am b/navit/graphics/opengl/Makefile.am deleted file mode 100644 index 02d356dd7..000000000 --- a/navit/graphics/opengl/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @OPENGL_CFLAGS@ @GLC_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_opengl -modulegraphics_LTLIBRARIES = libgraphics_opengl.la -libgraphics_opengl_la_SOURCES = graphics_opengl.c -libgraphics_opengl_la_LIBADD = @OPENGL_LIBS@ @GLC_LIBS@ -libgraphics_opengl_la_LDFLAGS = -module -avoid-version diff --git a/navit/graphics/qt5/CMakeLists.txt b/navit/graphics/qt5/CMakeLists.txt new file mode 100644 index 000000000..0f5e19c6c --- /dev/null +++ b/navit/graphics/qt5/CMakeLists.txt @@ -0,0 +1,31 @@ +# Find includes in corresponding build directories +set(CMAKE_INCLUDE_CURRENT_DIR ON) +# Instruct CMake to run moc automatically when needed. +set(CMAKE_AUTOMOC ON) +# Instruct CMake to build QRC if needed +#set(CMAKE_AUTORCC ON) -> unfortunate cmake used in CI doesnt have this + +# collect additional source files in this variable +set (GRAPHICS_QT5_ADDITIONAL "") + +# initialize QML and QWIDGET usage to not use +set(QML 0) +set(QWIDGET 0) + +# check if we have QML +if(USE_QML) + set(QML 1) + qt5_add_resources(QT5_QRC "graphics_qt5.qrc") + set(GRAPHICS_QT5_ADDITIONAL ${GRAPHICS_QT5_ADDITIONAL} "QNavitQuick.cpp" ${QT5_QRC}) +endif () + +#check if we have QWIDGET +if(USE_QWIDGET) + set(QWIDGET 1) + set(GRAPHICS_QT5_ADDITIONAL ${GRAPHICS_QT5_ADDITIONAL} "QNavitWidget.cpp") +endif () + +module_add_library(graphics_qt5 graphics_qt5.cpp event_qt5.cpp ${GRAPHICS_QT5_ADDITIONAL}) +# pass QML and QWIDGET preference to source +target_compile_definitions(graphics_qt5 PRIVATE USE_QML=${QML} USE_QWIDGET=${QWIDGET}) + diff --git a/navit/graphics/qt5/QNavitQuick.cpp b/navit/graphics/qt5/QNavitQuick.cpp new file mode 100644 index 000000000..d2664be27 --- /dev/null +++ b/navit/graphics/qt5/QNavitQuick.cpp @@ -0,0 +1,263 @@ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2008 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include "config.h" +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include "item.h" +#include "point.h" +#include "graphics.h" +#include "color.h" +#include "plugin.h" +#include "event.h" +#include "debug.h" +#include "window.h" +#include "callback.h" +#include "keys.h" +#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE) +#include <windows.h> +#endif +#include <QPainter> +#include "QNavitQuick.h" +#include "graphics_qt5.h" + +QNavitQuick::QNavitQuick(QQuickItem *parent) + : QQuickPaintedItem(parent) +{ + setAcceptedMouseButtons(Qt::AllButtons); + graphics_priv = NULL; +} + +void QNavitQuick::setGraphicContext(GraphicsPriv *gp) +{ + dbg(lvl_debug,"enter\n"); + graphics_priv = gp->gp; + QObject::connect(gp, SIGNAL(update()), this, SLOT(update())); +} + +static void paintOverlays(QPainter * painter, struct graphics_priv * gp, QPaintEvent * event) +{ + GHashTableIter iter; + struct graphics_priv * key, * value; + g_hash_table_iter_init (&iter, gp->overlays); + while (g_hash_table_iter_next (&iter, (void **)&key, (void **)&value)) + { + if(! value->disable) + { + QRect rr(value->x, value->y, value->pixmap->width(), value->pixmap->height()); + if(event->rect().intersects(rr)) + { + dbg(lvl_debug,"draw overlay (%d, %d, %d, %d)\n",value->x, value->y, value->pixmap->width(), value->pixmap->height()); + painter->drawPixmap(value->x, value->y, *value->pixmap); + /* draw overlays of overlay if any by recursive calling */ + paintOverlays(painter, value, event); + } + } + } +} + +void QNavitQuick::paint(QPainter *painter) +{ + QPaintEvent event = QPaintEvent(QRect(boundingRect().x(), boundingRect().y(), boundingRect().width(), boundingRect().height())); + + dbg(lvl_debug,"enter (%f, %f, %f, %f)\n",boundingRect().x(), boundingRect().y(), boundingRect().width(), boundingRect().height()); + + /* color background if any */ + if (graphics_priv->background_graphics_gc_priv != NULL) + { + painter->setPen(*graphics_priv->background_graphics_gc_priv->pen); + painter->fillRect(boundingRect(),*graphics_priv->background_graphics_gc_priv->brush); + } + /* draw base */ + painter->drawPixmap(0,0,*graphics_priv->pixmap, + boundingRect().x(), boundingRect().y(), + boundingRect().width(), boundingRect().height()); + paintOverlays(painter, graphics_priv, &event); +} + + +void QNavitQuick::keyPressEvent(QKeyEvent *event) +{ + dbg(lvl_debug,"enter\n"); + char key[2]; + int keycode; + char * text = NULL; + + keycode = event->key(); + key[0] = '\0'; + key[1] = '\0'; + switch (keycode) { + case Qt::Key_Up: + key[0]=NAVIT_KEY_UP; + break; + case Qt::Key_Down: + key[0]=NAVIT_KEY_DOWN; + break; + case Qt::Key_Left: + key[0]=NAVIT_KEY_LEFT; + break; + case Qt::Key_Right: + key[0]=NAVIT_KEY_RIGHT; + break; + case Qt::Key_Backspace: + key[0]=NAVIT_KEY_BACKSPACE; + break; + case Qt::Key_Tab: + key[0]=NAVIT_KEY_TAB; + break; + case Qt::Key_Delete: + key[0]=NAVIT_KEY_DELETE; + break; + case Qt::Key_Escape: + key[0]=NAVIT_KEY_BACK; + break; + case Qt::Key_Return: + case Qt::Key_Enter: + key[0]=NAVIT_KEY_RETURN; + break; + case Qt::Key_ZoomIn: + key[0]=NAVIT_KEY_ZOOM_IN; + break; + case Qt::Key_ZoomOut: + key[0]=NAVIT_KEY_ZOOM_OUT; + break; + case Qt::Key_PageUp: + key[0]=NAVIT_KEY_PAGE_UP; + break; + case Qt::Key_PageDown: + key[0]=NAVIT_KEY_PAGE_DOWN; + break; + default: + QString str=event->text(); + if((str != NULL) && (str.size() != 0)) + { + text=str.toUtf8().data(); + } + } + if(text != NULL) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void *)text); + else if (key[0]) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void *)key); + else + dbg(lvl_debug,"keyval 0x%x\n", keycode); +} + +void QNavitQuick::keyReleaseEvent(QKeyEvent *event) +{ + dbg(lvl_debug,"enter\n"); +} + +void QNavitQuick::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + dbg(lvl_debug,"enter\n"); + QQuickPaintedItem::geometryChanged(newGeometry,oldGeometry); + QPainter * painter = NULL; + if(graphics_priv == NULL) + { + dbg(lvl_debug,"Context not set, aborting\n"); + return; + } + if(graphics_priv->pixmap != NULL) + { + delete graphics_priv->pixmap; + graphics_priv->pixmap = NULL; + } + + graphics_priv->pixmap=new QPixmap(width(), height()); + painter = new QPainter(graphics_priv->pixmap); + if(painter != NULL) + { + QBrush brush; + painter->fillRect(0, 0, width(), height(), brush); + delete painter; + } + dbg(lvl_debug,"size %fx%f\n", width(), height()); + dbg(lvl_debug,"pixmap %p %dx%d\n", graphics_priv->pixmap, graphics_priv->pixmap->width(), graphics_priv->pixmap->height()); + /* if the root window got resized, tell navit about it */ + if(graphics_priv->root) + resize_callback(graphics_priv,width(),height()); +} + +void QNavitQuick::mouseEvent(int pressed, QMouseEvent *event) +{ + struct point p; + dbg(lvl_debug,"enter\n"); + p.x=event->x(); + p.y=event->y(); + switch (event->button()) { + case Qt::LeftButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), GINT_TO_POINTER(&p)); + break; + case Qt::MidButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), GINT_TO_POINTER(&p)); + break; + case Qt::RightButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), GINT_TO_POINTER(&p)); + break; + default: + break; + } +} + +void QNavitQuick::mousePressEvent(QMouseEvent *event) +{ + dbg(lvl_debug,"enter\n"); + mouseEvent(1, event); +} + +void QNavitQuick::mouseReleaseEvent(QMouseEvent *event) +{ + dbg(lvl_debug,"enter\n"); + mouseEvent(0, event); +} + +void QNavitQuick::mouseMoveEvent(QMouseEvent *event) +{ + dbg(lvl_debug,"enter\n"); + struct point p; + p.x=event->x(); + p.y=event->y(); + callback_list_call_attr_1(graphics_priv->callbacks, attr_motion, (void *)&p); +} + +void QNavitQuick::wheelEvent(QWheelEvent *event) +{ + struct point p; + int button; + dbg(lvl_debug,"enter\n"); + p.x=event->x(); // xy-coordinates of the mouse pointer + p.y=event->y(); + + if (event->delta() > 0) // wheel movement away from the person + button=4; + else if (event->delta() < 0) // wheel movement towards the person + button=5; + else + button=-1; + + if (button != -1) { + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), GINT_TO_POINTER(&p)); + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), GINT_TO_POINTER(&p)); + } + + event->accept(); +} + diff --git a/navit/graphics/qt5/QNavitQuick.h b/navit/graphics/qt5/QNavitQuick.h new file mode 100644 index 000000000..d213bdac5 --- /dev/null +++ b/navit/graphics/qt5/QNavitQuick.h @@ -0,0 +1,34 @@ +#ifndef QNAVITQUICK_H +#define QNAVITQUICK_H +class QNavitQuick; +#include <QtQuick/QQuickPaintedItem> +#include <QColor> + +#include "graphics_qt5.h" + +class QNavitQuick : public QQuickPaintedItem +{ + Q_OBJECT +public: + QNavitQuick(QQuickItem *parent = 0); + + void paint(QPainter *painter); + + Q_INVOKABLE void setGraphicContext(GraphicsPriv *gp); + +protected: + virtual void keyPressEvent(QKeyEvent *event); + virtual void keyReleaseEvent(QKeyEvent *event); + virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); + virtual void mouseEvent(int pressed, QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + + +private: + struct graphics_priv* graphics_priv; +}; + +#endif diff --git a/navit/graphics/qt5/QNavitWidget.cpp b/navit/graphics/qt5/QNavitWidget.cpp new file mode 100644 index 000000000..d58f835a6 --- /dev/null +++ b/navit/graphics/qt5/QNavitWidget.cpp @@ -0,0 +1,249 @@ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2008 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include "config.h" +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include "item.h" +#include "point.h" +#include "graphics.h" +#include "color.h" +#include "plugin.h" +#include "event.h" +#include "debug.h" +#include "window.h" +#include "callback.h" +#include "keys.h" +#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE) +#include <windows.h> +#endif +#include "graphics_qt5.h" +#include "QNavitWidget.h" +#include "QNavitWidget.moc" + +QNavitWidget :: QNavitWidget(struct graphics_priv *my_graphics_priv, + QWidget * parent, + Qt::WindowFlags flags): QWidget(parent, flags) +{ + graphics_priv = my_graphics_priv; +} + +bool QNavitWidget::event(QEvent *event) +{ + if (event->type() == QEvent::Gesture) + dbg(lvl_debug, "Gesture event caught"); + //return gestureEvent(static_cast<QGestureEvent*>(event)); + return QWidget::event(event); +} + +static void paintOverlays(QPainter * painter, struct graphics_priv * gp, QPaintEvent * event) +{ + GHashTableIter iter; + struct graphics_priv * key, * value; + g_hash_table_iter_init (&iter, gp->overlays); + while (g_hash_table_iter_next (&iter, (void **)&key, (void **)&value)) + { + if(! value->disable) + { + QRect rr(value->x, value->y, value->pixmap->width(), value->pixmap->height()); + if(event->rect().intersects(rr)) + { + dbg(lvl_debug,"draw overlay (%d, %d, %d, %d)\n",value->x, value->y, value->pixmap->width(), value->pixmap->height()); + painter->drawPixmap(value->x, value->y, *value->pixmap); + /* draw overlays of overlay if any by recursive calling */ + paintOverlays(painter, value, event); + } + } + } + +} + +void QNavitWidget :: paintEvent(QPaintEvent * event) +{ + dbg(lvl_debug,"enter (%d, %d, %d, %d)\n",event->rect().x(), event->rect().y(), event->rect().width(), event->rect().height()); + QPainter painter(this); + /* color background if any */ + if (graphics_priv->background_graphics_gc_priv != NULL) + { + painter.setPen(*graphics_priv->background_graphics_gc_priv->pen); + painter.fillRect(event->rect(),*graphics_priv->background_graphics_gc_priv->brush); + } + painter.drawPixmap(0,0,*graphics_priv->pixmap, + event->rect().x(), event->rect().y(), + event->rect().width(), event->rect().height()); + paintOverlays(&painter, graphics_priv, event); +} + +void QNavitWidget::resizeEvent(QResizeEvent * event) +{ + QPainter * painter = NULL; + if(graphics_priv->pixmap != NULL) + { + delete graphics_priv->pixmap; + graphics_priv->pixmap = NULL; + } + + graphics_priv->pixmap=new QPixmap(size()); + painter = new QPainter(graphics_priv->pixmap); + if(painter != NULL) + { + QBrush brush; + painter->fillRect(0, 0, width(), height(), brush); + delete painter; + } + dbg(lvl_debug,"size %dx%d\n", width(), height()); + dbg(lvl_debug,"pixmap %p %dx%d\n", graphics_priv->pixmap, graphics_priv->pixmap->width(), graphics_priv->pixmap->height()); + /* if the root window got resized, tell navit about it */ + if(graphics_priv->root) + resize_callback(graphics_priv,width(),height()); +} + +void QNavitWidget::mouseEvent(int pressed, QMouseEvent *event) +{ + struct point p; +// dbg(lvl_debug,"enter\n"); + p.x=event->x(); + p.y=event->y(); + switch (event->button()) { + case Qt::LeftButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), GINT_TO_POINTER(&p)); + break; + case Qt::MidButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), GINT_TO_POINTER(&p)); + break; + case Qt::RightButton: + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), GINT_TO_POINTER(&p)); + break; + default: + break; + } +} + +void QNavitWidget::keyPressEvent(QKeyEvent *event) +{ + dbg(lvl_debug,"enter\n"); + char key[2]; + int keycode; + char * text = NULL; + + keycode = event->key(); + key[0] = '\0'; + key[1] = '\0'; + switch (keycode) { + case Qt::Key_Up: + key[0]=NAVIT_KEY_UP; + break; + case Qt::Key_Down: + key[0]=NAVIT_KEY_DOWN; + break; + case Qt::Key_Left: + key[0]=NAVIT_KEY_LEFT; + break; + case Qt::Key_Right: + key[0]=NAVIT_KEY_RIGHT; + break; + case Qt::Key_Backspace: + key[0]=NAVIT_KEY_BACKSPACE; + break; + case Qt::Key_Tab: + key[0]=NAVIT_KEY_TAB; + break; + case Qt::Key_Delete: + key[0]=NAVIT_KEY_DELETE; + break; + case Qt::Key_Escape: + key[0]=NAVIT_KEY_BACK; + break; + case Qt::Key_Return: + case Qt::Key_Enter: + key[0]=NAVIT_KEY_RETURN; + break; + case Qt::Key_ZoomIn: + key[0]=NAVIT_KEY_ZOOM_IN; + break; + case Qt::Key_ZoomOut: + key[0]=NAVIT_KEY_ZOOM_OUT; + break; + case Qt::Key_PageUp: + key[0]=NAVIT_KEY_PAGE_UP; + break; + case Qt::Key_PageDown: + key[0]=NAVIT_KEY_PAGE_DOWN; + break; + default: + QString str=event->text(); + if((str != NULL) && (str.size() != 0)) + { + text=str.toUtf8().data(); + } + } + if(text != NULL) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void *)text); + else if (key[0]) + callback_list_call_attr_1(graphics_priv->callbacks, attr_keypress, (void *)key); + else + dbg(lvl_debug,"keyval 0x%x\n", keycode); +} + + +void QNavitWidget::mousePressEvent(QMouseEvent *event) +{ +// dbg(lvl_debug,"enter\n"); + mouseEvent(1, event); +} + +void QNavitWidget::mouseReleaseEvent(QMouseEvent *event) +{ +// dbg(lvl_debug,"enter\n"); + mouseEvent(0, event); +} + +void QNavitWidget::mouseMoveEvent(QMouseEvent *event) +{ + struct point p; +// dbg(lvl_debug,"enter\n"); + p.x=event->x(); + p.y=event->y(); + callback_list_call_attr_1(graphics_priv->callbacks, attr_motion, (void *)&p); +} + +void QNavitWidget::wheelEvent(QWheelEvent *event) +{ + struct point p; + int button; + dbg(lvl_debug,"enter\n"); + p.x=event->x(); // xy-coordinates of the mouse pointer + p.y=event->y(); + + if (event->delta() > 0) // wheel movement away from the person + button=4; + else if (event->delta() < 0) // wheel movement towards the person + button=5; + else + button=-1; + + if (button != -1) { + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), GINT_TO_POINTER(&p)); + callback_list_call_attr_3(graphics_priv->callbacks, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), GINT_TO_POINTER(&p)); + } + + event->accept(); +} diff --git a/navit/graphics/qt5/QNavitWidget.h b/navit/graphics/qt5/QNavitWidget.h new file mode 100644 index 000000000..727e7e130 --- /dev/null +++ b/navit/graphics/qt5/QNavitWidget.h @@ -0,0 +1,34 @@ +#ifndef __QNavitWidget_h +#define __QNavitWidget_h +class QNavitWidget; +#include "graphics_qt5.h" +#include <QPixmap> +#include <QWidget> +#include <QMouseEvent> +#include <QWheelEvent> +#include <QEvent> + +class QNavitWidget : public QWidget +{ + Q_OBJECT +public: + QNavitWidget(struct graphics_priv *my_graphics_priv, + QWidget * parent, + Qt::WindowFlags flags); +protected: + virtual bool event(QEvent *event); + virtual void keyPressEvent(QKeyEvent *event); + virtual void paintEvent(QPaintEvent * event); + virtual void resizeEvent(QResizeEvent * event); + virtual void mouseEvent(int pressed, QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void wheelEvent(QWheelEvent * event); + + +private: + struct graphics_priv *graphics_priv; +}; +#endif + diff --git a/navit/graphics/qt5/event_qt5.cpp b/navit/graphics/qt5/event_qt5.cpp new file mode 100644 index 000000000..9cea3d921 --- /dev/null +++ b/navit/graphics/qt5/event_qt5.cpp @@ -0,0 +1,185 @@ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2008 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include <stdio.h> +#include <stdlib.h> +#include "config.h" +#include "navit/point.h" +#include "navit/item.h" +#include "navit/graphics.h" +#include "navit/color.h" +#include "navit/debug.h" +#include "navit/plugin.h" +#include "navit/callback.h" +#include "navit/event.h" +#include "navit/window.h" +#include "navit/keys.h" +#include "navit/navit.h" +#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE) +#include <windows.h> +#endif +#include <QSocketNotifier> +#include "graphics_qt5.h" +#include "event_qt5.h" +#include "event_qt5.moc" + +struct event_watch { + QSocketNotifier *sn; + struct callback *cb; + int fd; +}; + +static void event_qt5_remove_timeout(struct event_timeout *to); + +qt5_navit_timer :: qt5_navit_timer (QObject * parent) : QObject(parent) +{ + timer_type=g_hash_table_new(NULL, NULL); + timer_callback=g_hash_table_new(NULL, NULL); + watches=g_hash_table_new(NULL,NULL); + dbg(lvl_debug, "qt5_navit_timer object created\n"); +} + +void qt5_navit_timer :: timerEvent (QTimerEvent * event) +{ + int id=event->timerId(); + void* multi = NULL; +// dbg(lvl_debug, "TimerEvent (%d)\n", id); + struct callback *cb=(struct callback *)g_hash_table_lookup(timer_callback, (void *)(long)id); + if (cb) + callback_call_0(cb); + /* remove timer if it was oneshot timer */ + if (g_hash_table_lookup_extended(timer_type, (void *)(long)id, NULL, &multi)) + { + /* it's still in the list */ + if(((int)(long)multi) == 0) + event_qt5_remove_timeout((struct event_timeout *)(long)id); + } +// dbg(lvl_debug, "TimerEvent (%d) leave\n", id); +} + +qt5_navit_timer * qt5_timer = NULL; + +static void +event_qt5_main_loop_run(void) +{ + + dbg(lvl_debug,"enter\n"); + if(navit_app != NULL) + navit_app->exec(); + +} + +static void event_qt5_main_loop_quit(void) +{ + dbg(lvl_debug,"enter\n"); + exit(0); +} + +static struct event_watch * +event_qt5_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) +{ + dbg(lvl_debug,"enter fd=%d\n",(int)(long)fd); + struct event_watch *ret=g_new0(struct event_watch, 1); + ret->fd=fd; + ret->cb=cb; + g_hash_table_insert(qt5_timer->watches, GINT_TO_POINTER(fd), ret); + ret->sn=new QSocketNotifier(fd, QSocketNotifier::Read, qt5_timer); + QObject::connect(ret->sn, SIGNAL(activated(int)), qt5_timer, SLOT(watchEvent(int))); + return ret; +} + +static void +event_qt5_remove_watch(struct event_watch *ev) +{ + dbg(lvl_debug,"enter\n"); + g_hash_table_remove(qt5_timer->watches, GINT_TO_POINTER(ev->fd)); + delete(ev->sn); + g_free(ev); +} + + +static struct event_timeout * +event_qt5_add_timeout(int timeout, int multi, struct callback *cb) +{ + int id; + dbg(lvl_debug,"add timeout %d, mul %d, %p ==",timeout, multi, cb); + id=qt5_timer->startTimer(timeout); + dbg(lvl_debug,"%d\n", id); + g_hash_table_insert(qt5_timer->timer_callback, (void *)(long)id, cb); + g_hash_table_insert(qt5_timer->timer_type, (void *)(long)id, (void *)(long)!!multi); + return (struct event_timeout *)(long)id; +} + +static void +event_qt5_remove_timeout(struct event_timeout *to) +{ + dbg(lvl_debug,"remove timeout (%d)\n",(int)(long)to); + qt5_timer->killTimer((int)(long)to); + g_hash_table_remove(qt5_timer->timer_callback, to); + g_hash_table_remove(qt5_timer->timer_type, to); +} + + +static struct event_idle * +event_qt5_add_idle(int priority, struct callback *cb) +{ + dbg(lvl_debug,"add idle event\n"); + return (struct event_idle *)event_qt5_add_timeout(0, 1, cb); +} + +static void +event_qt5_remove_idle(struct event_idle *ev) +{ + dbg(lvl_debug,"Remove idle timeout\n"); + event_qt5_remove_timeout((struct event_timeout *) ev); +} + +static void +event_qt5_call_callback(struct callback_list *cb) +{ + dbg(lvl_debug,"enter\n"); +} + +static struct event_methods event_qt5_methods = { + event_qt5_main_loop_run, + event_qt5_main_loop_quit, + event_qt5_add_watch, + event_qt5_remove_watch, + event_qt5_add_timeout, + event_qt5_remove_timeout, + event_qt5_add_idle, + event_qt5_remove_idle, + event_qt5_call_callback, +}; + +static struct event_priv * +event_qt5_new(struct event_methods *meth) +{ + *meth=event_qt5_methods; + qt5_timer = new qt5_navit_timer(NULL); + return NULL; +} + + +void +qt5_event_init(void) +{ + plugin_register_category_event("qt5", event_qt5_new); +} diff --git a/navit/graphics/qt5/event_qt5.h b/navit/graphics/qt5/event_qt5.h new file mode 100644 index 000000000..f999d3a46 --- /dev/null +++ b/navit/graphics/qt5/event_qt5.h @@ -0,0 +1,18 @@ +#include <glib.h> +#include <QObject> + +class qt5_navit_timer : public QObject +{ + Q_OBJECT +public: + qt5_navit_timer(QObject * parent = 0); + GHashTable *timer_type; + GHashTable *timer_callback; + GHashTable *watches; +protected: + void timerEvent(QTimerEvent * event); +}; + + +void +qt5_event_init(void); diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp new file mode 100644 index 000000000..37fda3d66 --- /dev/null +++ b/navit/graphics/qt5/graphics_qt5.cpp @@ -0,0 +1,1012 @@ +/** + * Navit, a modular navigation system. + * Copyright (C) 2005-2008 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <glib.h> +#include "config.h" +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include "item.h" +#include "point.h" +#include "graphics.h" +#include "color.h" +#include "plugin.h" +#include "event.h" +#include "debug.h" +#include "window.h" +#include "callback.h" +#if defined(WINDOWS) || defined(WIN32) || defined (HAVE_API_WIN32_CE) +#include <windows.h> +#endif +#include "graphics_qt5.h" +#include "event_qt5.h" +#include <QGuiApplication> +#include <QPixmap> +#include <QPainter> +#include <QFont> +#include <QSvgRenderer> +#include <QDBusConnection> +#include <QDBusInterface> +#include <QFile> +#include <QScreen> +#if USE_QML +#include <QQuickWindow> +#include <QQmlApplicationEngine> +#include <QQmlContext> +#include "QNavitQuick.h" +#endif +#if USE_QWIDGET +#include <QApplication> +#include "QNavitWidget.h" +#endif + +#if USE_QML +GraphicsPriv::GraphicsPriv(struct graphics_priv * gp) +{ + this->gp = gp; +} + +GraphicsPriv::~GraphicsPriv() +{ +} + +void GraphicsPriv::emit_update() +{ + emit update(); +} +#endif + +QGuiApplication * navit_app = NULL; + +struct graphics_font_priv { + QFont * font; +}; + +struct graphics_image_priv { + QPixmap * pixmap; +}; + +static void +graphics_destroy(struct graphics_priv *gr) +{ +// dbg(lvl_debug,"enter\n"); +#ifdef QT_QPAINTER_USE_FREETYPE + gr->freetype_methods.destroy(); +#endif + /* destroy painter */ + if(gr->painter != NULL) + delete(gr->painter); + /* destroy pixmap */ + if(gr->pixmap != NULL) + delete(gr->pixmap); + /* destroy widget if root window*/ + if(gr->root) + { +#if USE_QWIDGET + if(gr->widget != NULL) + delete(gr->widget); +#endif +#if USE_QML + if(gr->GPriv != NULL) + delete(gr->GPriv); +#endif + } + /* unregister from parent, if any */ + if(gr->parent != NULL) + { + g_hash_table_remove(gr->parent->overlays, gr); + } +#ifdef SAILFISH_OS + if(gr->display_on_ev != NULL) + { + event_remove_timeout(gr->display_on_ev); + } + if(gr->display_on_cb != NULL) + { + g_free(gr->display_on_cb); + } +#endif + /* destroy overlays hash */ + g_hash_table_destroy(gr->overlays); + /* destroy global application if destroying the last */ + if(gr->root) + { + if(navit_app != NULL) + { + delete (navit_app); + } + navit_app = NULL; + /* destroy argv if any */ + while(gr->argc > 0) + { + gr->argc --; + if(gr->argv[gr->argc] != NULL) + g_free(gr->argv[gr->argc]); + } + } + /* destroy self */ + g_free(gr); +} + +static void font_destroy(struct graphics_font_priv *font) +{ +// dbg(lvl_debug,"enter\n"); + if(font->font != NULL) + delete(font->font); + g_free(font); + +} + +static struct graphics_font_methods font_methods = { + font_destroy +}; + +static struct graphics_font_priv *font_new(struct graphics_priv *gr, struct graphics_font_methods *meth, char *font, int size, int flags) +{ + struct graphics_font_priv *font_priv; +// dbg(lvl_debug,"enter (font %s, %d)\n", font, size); + font_priv = g_new0(struct graphics_font_priv, 1); + if(font != NULL) + font_priv->font=new QFont(font,size/16); + else + font_priv->font=new QFont("Arial",size/16); + font_priv->font->setStyleStrategy(QFont::NoAntialias); + *meth=font_methods; + return font_priv; +} + +static void +gc_destroy(struct graphics_gc_priv *gc) +{ +// dbg(lvl_debug,"enter gc=%p\n", gc); + delete(gc->pen); + delete(gc->brush); + g_free(gc); +} + +static void +gc_set_linewidth(struct graphics_gc_priv *gc, int w) +{ +// dbg(lvl_debug,"enter gc=%p, %d\n", gc, w); + gc->pen->setWidth(w); +} + +static void +gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n) +{ + if(n <= 0) + { + dbg(lvl_error, "Refuse to set dashes without dash pattern"); + } + /* use Qt dash feature */ + QVector<qreal> dashes; + gc->pen->setWidth(w); + gc->pen->setDashOffset(offset); + for(int a = 0; a < n; a ++) + { + dashes << dash_list[a]; + } + /* Qt requires the pattern to have even element count. Add the last + * element twice if n doesn't divide by two + */ + if((n % 2) != 0) + { + dashes << dash_list[n-1]; + } + gc->pen->setDashPattern(dashes); +} + +static void +gc_set_foreground(struct graphics_gc_priv *gc, struct color *c) +{ + QColor col(c->r >> 8, c->g >> 8, c->b >> 8, c->a >> 8 ); +// dbg(lvl_debug,"context %p: color %02x%02x%02x\n",gc, c->r >> 8, c->g >> 8, c->b >> 8); + gc->pen->setColor(col); + gc->brush->setColor(col); + //gc->c=*c; +} + +static void +gc_set_background(struct graphics_gc_priv *gc, struct color *c) +{ + QColor col(c->r >> 8, c->g >> 8, c->b >> 8, c->a >> 8 ); +// dbg(lvl_debug,"context %p: color %02x%02x%02x\n",gc, c->r >> 8, c->g >> 8, c->b >> 8); + //gc->pen->setColor(col); + //gc->brush->setColor(col); +} + +static struct graphics_gc_methods gc_methods = { + gc_destroy, + gc_set_linewidth, + gc_set_dashes, + gc_set_foreground, + gc_set_background +}; + +static struct graphics_gc_priv *gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth) +{ + struct graphics_gc_priv * graphics_gc_priv = NULL; +// dbg(lvl_debug,"enter gr==%p\n", gr); + graphics_gc_priv = g_new0(struct graphics_gc_priv, 1); + graphics_gc_priv->graphics_priv = gr; + graphics_gc_priv->pen=new QPen(); + graphics_gc_priv->brush=new QBrush(Qt::SolidPattern); + + *meth=gc_methods; + return graphics_gc_priv; +} + +static void image_destroy(struct graphics_image_priv *img) +{ +// dbg(lvl_debug, "enter\n"); + if(img->pixmap != NULL) + delete(img->pixmap); + g_free(img); +} + +struct graphics_image_methods image_methods ={ + image_destroy +}; + + +static struct graphics_image_priv * +image_new(struct graphics_priv *gr, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot, int rotation) +{ + struct graphics_image_priv * image_priv; +// dbg(lvl_debug,"enter %s, %d %d\n", path, *w, *h); + if(path[0] == 0) + { + dbg(lvl_debug,"Refuse to load image without path\n"); + return NULL; + } + QString key(path); + QString renderer_key(key); + QString extension = key.right(key.lastIndexOf(".")); + QFile imagefile(key); + if(!imagefile.exists()) + { + /* file doesn't exit. Either navit wants us to guess file name by + * ommitting exstension, or the file does really not exist. + */ + if(extension != "") + { + /*file doesn't exist. give up */ + dbg(lvl_debug,"File %s does not exist\n",path); + return NULL; + } + else + { + /* add ".svg" for renderer to try .svg file first in renderer */ + dbg(lvl_debug, "Guess extension on %s\n", path); + renderer_key += ".svg"; + } + } + image_priv = g_new0(struct graphics_image_priv, 1); + *meth = image_methods; + + /* check if this can be rendered */ + if(renderer_key.endsWith("svg")) + { + QSvgRenderer renderer(renderer_key); + if(renderer.isValid()) + { + dbg(lvl_debug,"render %s\n", path); + /* try to render this */ + /* assume "standard" size if size is not given */ + if(*w <= 0) *w = renderer.defaultSize().width(); + if(*h <= 0) *h = renderer.defaultSize().height(); + image_priv->pixmap=new QPixmap(*w, *h); + image_priv->pixmap->fill(Qt::transparent); + QPainter painter(image_priv->pixmap); + renderer.render(&painter); + } + } + + if (image_priv->pixmap == NULL) { + /*cannot be rendered. try to load it */ + dbg(lvl_debug,"cannot render %s\n",path); + image_priv->pixmap=new QPixmap(key); + } + + /* check if we got image */ + if (image_priv->pixmap->isNull()) { + g_free(image_priv); + return NULL; + } + else + { + /* check if we need to scale this */ + if((*w > 0) && (*h > 0)) + { + if((image_priv->pixmap->width() != *w) || + (image_priv->pixmap->height() != *h)) + { + dbg(lvl_debug,"scale pixmap %s, %d->%d,%d->%d\n",path, image_priv->pixmap->width(), *w, image_priv->pixmap->height(), *h); + QPixmap * scaled = new QPixmap(image_priv->pixmap->scaled(*w, *h,Qt::IgnoreAspectRatio,Qt::FastTransformation)); + delete (image_priv->pixmap); + image_priv->pixmap = scaled; + } + } + } + + *w=image_priv->pixmap->width(); + *h=image_priv->pixmap->height(); +// dbg(lvl_debug, "Got (%d,%d)\n", *w,*h); + if (hot) { + hot->x=*w/2; + hot->y=*h/2; + } + + return image_priv; +} + +static void +draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) +{ + int i; + QPolygon polygon; +// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d, %d)\n", gr, gc, p->x, p->y); + if(gr->painter == NULL) + return; + + for (i = 0 ; i < count ; i++) + polygon.putPoints(i, 1, p[i].x, p[i].y); + gr->painter->setPen(*gc->pen); + gr->painter->drawPolyline(polygon); + +} + +static void +draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) +{ + int i; + QPolygon polygon; +// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d, %d)\n", gr, gc, p->x, p->y); + if(gr->painter == NULL) + return; + + for (i = 0 ; i < count ; i++) + polygon.putPoints(i, 1, p[i].x, p[i].y); + gr->painter->setPen(*gc->pen); + gr->painter->setBrush(*gc->brush); + /* if the polygon is transparent, we need to clear it first */ + if(!gc->brush->isOpaque()) + { + QPainter::CompositionMode mode = gr->painter->compositionMode(); + gr->painter->setCompositionMode(QPainter::CompositionMode_Clear); + gr->painter->drawPolygon(polygon); + gr->painter->setCompositionMode(mode); + } + gr->painter->drawPolygon(polygon); +} + +static void +draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h) +{ +// dbg(lvl_debug,"gr=%p gc=%p %d,%d,%d,%d\n", gr, gc, p->x, p->y, w, h); + if(gr->painter == NULL) + return; + /* if the rectangle is transparent, we need to clear it first */ + if(!gc->brush->isOpaque()) + { + QPainter::CompositionMode mode = gr->painter->compositionMode(); + gr->painter->setCompositionMode(QPainter::CompositionMode_Clear); + gr->painter->fillRect(p->x,p->y, w, h, *gc->brush); + gr->painter->setCompositionMode(mode); + } + gr->painter->fillRect(p->x,p->y, w, h, *gc->brush); +} + +static void +draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r) +{ +// dbg(lvl_debug,"enter gr=%p, gc=%p, (%d,%d) r=%d\n", gr, gc, p->x, p->y, r); + if(gr->painter == NULL) + return; + gr->painter->setPen(*gc->pen); + gr->painter->drawArc(p->x-r/2, p->y-r/2, r, r, 0, 360*16); +} + + +static void +draw_text(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy) +{ + dbg(lvl_debug,"enter gc=%p, fg=%p, bg=%p pos(%d,%d) %s\n", gr, fg, bg, p->x, p->y, text); + QPainter *painter=gr->painter; + if(painter == NULL) + return; +#ifdef QT_QPAINTER_USE_FREETYPE + struct font_freetype_text *t; + struct font_freetype_glyph *g, **gp; + struct color transparent = {0x0000, 0x0000, 0x0000, 0x0000}; + struct color fgc; + struct color bgc; + QColor temp; + + int i,x,y; + + if (! font) + return; + /* extract colors */ + fgc.r = fg->pen->color().red() << 8; + fgc.g = fg->pen->color().green() << 8; + fgc.b = fg->pen->color().blue() << 8; + fgc.a = fg->pen->color().alpha() << 8; + if(bg != NULL) + { + bgc.r = bg->pen->color().red() << 8; + bgc.g = bg->pen->color().green() << 8; + bgc.b = bg->pen->color().blue() << 8; + bgc.a = bg->pen->color().alpha() << 8; + } + else + { + bgc = transparent; + } + + t=gr->freetype_methods.text_new(text, (struct font_freetype_font *)font, dx, dy); + x=p->x << 6; + y=p->y << 6; + gp=t->glyph; + i=t->glyph_count; + if (bg) { + while (i-- > 0) { + g=*gp++; + if (g->w && g->h) { + unsigned char *data; + QImage img(g->w+2, g->h+2, QImage::Format_ARGB32_Premultiplied); + data=img.bits(); + gr->freetype_methods.get_shadow(g,(unsigned char *)data,img.bytesPerLine(),&bgc,&transparent); + + painter->drawImage(((x+g->x)>>6)-1, ((y+g->y)>>6)-1, img); + } + x+=g->dx; + y+=g->dy; + } + } + x=p->x << 6; + y=p->y << 6; + gp=t->glyph; + i=t->glyph_count; + while (i-- > 0) { + g=*gp++; + if (g->w && g->h) { + unsigned char *data; + QImage img(g->w, g->h, QImage::Format_ARGB32_Premultiplied); + data=img.bits(); + gr->freetype_methods.get_glyph(g,(unsigned char *)data,img.bytesPerLine(),&fgc,&bgc,&transparent); + painter->drawImage((x+g->x)>>6, (y+g->y)>>6, img); + } + x+=g->dx; + y+=g->dy; + } + gr->freetype_methods.text_destroy(t); +#else + QString tmp=QString::fromUtf8(text); + QMatrix sav=gr->painter->worldMatrix(); + QMatrix m(dx/65535.0,dy/65535.0,-dy/65535.0,dx/65535.0,p->x,p->y); + painter->setWorldMatrix(m,TRUE); + painter->setPen(*fg->pen); + painter->setFont(*font->font); + painter->drawText(0, 0, tmp); + painter->setWorldMatrix(sav); +#endif +} + +static void +draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img) +{ +// dbg(lvl_debug,"enter\n"); + if(gr->painter != NULL) + gr->painter->drawPixmap(p->x, p->y, *img->pixmap); + else + dbg(lvl_debug, "Try to draw image, but no painter\n"); +} + +static void draw_drag(struct graphics_priv *gr, struct point *p) +{ + if(p != NULL) + { +// dbg(lvl_debug,"enter %p (%d,%d)\n", gr, p->x, p->y); + gr->x = p->x; + gr->y = p->y; + } + else + { +// dbg(lvl_debug,"enter %p (NULL)\n", gr); + } +} + +static void +background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc) +{ +// dbg(lvl_debug,"register context %p on %p\n", gc, gr); + gr->background_graphics_gc_priv = gc; +} + +static void +draw_mode(struct graphics_priv *gr, enum draw_mode_num mode) +{ + switch (mode) + { + case draw_mode_begin: + dbg(lvl_debug,"Begin drawing on context %p (use == %d)\n", gr, gr->use_count); + gr->use_count ++; + if(gr->painter == NULL) + gr->painter = new QPainter(gr->pixmap); + else + dbg(lvl_debug, "drawing on %p already active\n", gr); + break; + case draw_mode_end: + dbg(lvl_debug,"End drawing on context %p (use == %d)\n", gr, gr->use_count); + gr->use_count --; + if(gr->use_count > 0) + { + dbg(lvl_debug, "drawing on %p still in use\n", gr); + } + else if(gr->painter != NULL) + { + gr->painter->end(); + delete(gr->painter); + gr->painter = NULL; +#if USE_QWIDGET + /* call repaint on widget */ + if(gr->widget != NULL) + gr->widget->repaint(gr->x, gr->y, gr->pixmap->width(), gr->pixmap->height()); +#endif +#if USE_QML + if(gr->GPriv != NULL) + gr->GPriv->emit_update(); + +#endif + } + else + dbg(lvl_debug, "Context %p not active!\n", gr) + + break; + default: + dbg(lvl_debug,"Unknown drawing %d on context %p\n", mode, gr); + break; + } +} + +static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound); + +void +resize_callback(struct graphics_priv * gr, int w, int h) +{ +// dbg(lvl_debug,"enter (%d, %d)\n", w, h); + callback_list_call_attr_2(gr->callbacks, attr_resize, + GINT_TO_POINTER(w), GINT_TO_POINTER(h)); +} + +static int +graphics_qt5_fullscreen(struct window *w, int on) +{ + struct graphics_priv * gr; +// dbg(lvl_debug,"enter\n"); + gr = (struct graphics_priv *) w->priv; +#if USE_QML + if(gr->window != NULL) + { + if(on) + gr->window->setWindowState(Qt::WindowFullScreen); + else + gr->window->setWindowState(Qt::WindowMaximized); + } +#endif +#if USE_QWIDGET + if(gr->widget != NULL) + { + if(on) + gr->widget->setWindowState(Qt::WindowFullScreen); + else + gr->widget->setWindowState(Qt::WindowMaximized); + } +#endif + return 1; +} + +#ifdef SAILFISH_OS +static void +keep_display_on(struct graphics_priv * priv) +{ +// dbg(lvl_debug,"enter\n"); + QDBusConnection system = QDBusConnection::connectToBus(QDBusConnection::SystemBus, "system"); + QDBusInterface interface("com.nokia.mce", "/com/nokia/mce/request", "com.nokia.mce.request", system); + + interface.call(QLatin1String("req_display_blanking_pause")); +} +#endif + + +static void +graphics_qt5_disable_suspend(struct window *w) +{ +// dbg(lvl_debug,"enter\n"); +#ifdef SAILFISH_OS + struct graphics_priv * gr; + gr = (struct graphics_priv *) w->priv; + keep_display_on(gr); + /* to keep display on, d-bus trigger must be called at least once per second. + * to cope with fuzz, trigger it once per 30 seconds */ + gr->display_on_cb = callback_new_1(callback_cast(keep_display_on), gr); + gr->display_on_ev = event_add_timeout(30000, 1, gr->display_on_cb); +#endif +} + +static void * +get_data(struct graphics_priv *this_priv, char const *type) +{ +// dbg(lvl_debug,"enter: %s\n", type); + if (strcmp(type, "window") == 0) { + struct window *win; +// dbg(lvl_debug,"window detected\n"); + win = g_new0(struct window, 1); + win->priv = this_priv; + win->fullscreen = graphics_qt5_fullscreen; + win->disable_suspend = graphics_qt5_disable_suspend; + resize_callback(this_priv, this_priv->pixmap->width(),this_priv->pixmap->height()); + return win; + } + return NULL; +} + +static void image_free(struct graphics_priv *gr, struct graphics_image_priv *priv) +{ +// dbg(lvl_debug,"enter\n"); + delete(priv->pixmap); + g_free(priv); +} + +static void get_text_bbox(struct graphics_priv *gr, struct graphics_font_priv *font, char *text, int dx, int dy, struct point *ret, int estimate) +{ +// dbg(lvl_debug,"enter %s %d %d\n", text, dx, dy); + QPainter *painter=gr->painter; + QString tmp=QString::fromUtf8(text); + if(gr->painter != NULL) + { + gr->painter->setFont(*font->font); + QRect r=painter->boundingRect(0,0,gr->pixmap->width(),gr->pixmap->height(),0,tmp); +// dbg (lvl_debug, "Text bbox: %d %d (%d,%d),(%d,%d)\n",dx, dy, r.left(), r.top(), r.right(), r.bottom()); + /* low left */ + ret[0].x = r.left(); + ret[0].y = r.bottom(); + /* top left */ + ret[1].x = r.left(); + ret[1].y = r.top(); + /* top right */ + ret[2].x = r.right(); + ret[2].y = r.top(); + /* low right */ + ret[3].x = r.right(); + ret[3].y = r.bottom(); + } +} + +static void overlay_disable(struct graphics_priv *gr, int disable) +{ + GHashTableIter iter; + struct graphics_priv * key, * value; +// dbg(lvl_debug,"enter gr=%p, %d\n", gr, disable); + + g_hash_table_iter_init (&iter, gr->overlays); + while (g_hash_table_iter_next (&iter, (void **)&key, (void **)&value)) + { + /* disable or enable all overlays of this pane */ + value->disable = disable; + } +} + +static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound) +{ +// dbg(lvl_debug,"enter\n"); + gr->x = p->x; + gr->y = p->y; + if(gr->painter != NULL) + { + delete(gr->painter); + } + delete(gr->pixmap); + gr->pixmap = new QPixmap(w, h); + gr->pixmap->fill(Qt::transparent); + if(gr->painter != NULL) + gr->painter = new QPainter (gr->pixmap); +} + +static struct graphics_methods graphics_methods = { + graphics_destroy, + draw_mode, + draw_lines, + draw_polygon, + draw_rectangle, + draw_circle, + draw_text, + draw_image, + NULL, + draw_drag, + font_new, + gc_new, + background_gc, + overlay_new, + image_new, + get_data, + image_free, + get_text_bbox, + overlay_disable, + overlay_resize, +}; + +/* create new graphics context on given context */ +static struct graphics_priv * +overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound) +{ + struct graphics_priv * graphics_priv = NULL; + graphics_priv = g_new0(struct graphics_priv, 1); + *meth=graphics_methods; +#ifdef QT_QPAINTER_USE_FREETYPE + if (gr->font_freetype_new) { + graphics_priv->font_freetype_new=gr->font_freetype_new; + gr->font_freetype_new(&graphics_priv->freetype_methods); + meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))graphics_priv->freetype_methods.font_new; + meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))graphics_priv->freetype_methods.get_text_bbox; + } +#endif +#if USE_QML + graphics_priv->window = gr->window; + graphics_priv->GPriv = gr->GPriv; +#endif +#if USE_QWIDGET + graphics_priv->widget = gr->widget; +#endif + graphics_priv->x = p->x; + graphics_priv->y = p->y; + graphics_priv->disable = false; + graphics_priv->callbacks = gr->callbacks; + graphics_priv->pixmap = new QPixmap(w, h); + graphics_priv->pixmap->fill(Qt::transparent); + graphics_priv->painter = NULL; + graphics_priv->use_count = 0; + graphics_priv->parent = gr; + graphics_priv->overlays=g_hash_table_new(NULL, NULL); + graphics_priv->root = false; + graphics_priv->argc = 0; + graphics_priv->argv[0] = NULL; + /* register on parent */ + g_hash_table_insert(gr->overlays, graphics_priv, graphics_priv); +// dbg(lvl_debug,"New overlay: %p\n", graphics_priv); + + return graphics_priv; +} + +/* create application and initial graphics context */ +static struct graphics_priv * +graphics_qt5_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl) +{ + struct graphics_priv * graphics_priv = NULL; + struct attr * event_loop_system = NULL; + struct attr * platform = NULL; + struct attr * fullscreen = NULL; + struct attr * attr_widget = NULL; + bool use_qml = USE_QML; + bool use_qwidget = USE_QWIDGET; + + //dbg(lvl_debug,"enter\n"); + + /* get qt widget attr */ + if((attr_widget=attr_search(attrs, NULL, attr_qt5_widget))) + { + /* check if we shall use qml */ + if(strcmp (attr_widget->u.str, "qwidget") == 0) + { + use_qml = false; + } + /* check if we shall use qwidget */ + if(strcmp (attr_widget->u.str, "qml") == 0) + { + use_qwidget = false; + } + } + if(use_qml && use_qwidget) + { + /* both are possible, default to QML */ + use_qwidget = false; + } + + /*register graphic methods by copying in our predefined ones */ + *meth=graphics_methods; + + /* get event loop from config and request event loop*/ + event_loop_system = attr_search(attrs, NULL, attr_event_loop_system); + if (event_loop_system && event_loop_system->u.str) { + //dbg(lvl_debug, "event_system is %s\n", event_loop_system->u.str); + if (!event_request_system(event_loop_system->u.str, "graphics_qt5")) + return NULL; + } else { + /* no event system requested by config. Default to our own */ + if (!event_request_system("qt5", "graphics_qt5")) + return NULL; + } + +#ifdef QT_QPAINTER_USE_FREETYPE + struct font_priv * (*font_freetype_new)(void *meth); + /* get font plugin if present */ + font_freetype_new=(struct font_priv *(*)(void *))plugin_get_category_font("freetype"); + if (!font_freetype_new) { + dbg(lvl_error,"no freetype\n"); + return NULL; + } +#endif + + /* create root graphics layer */ + graphics_priv = g_new0(struct graphics_priv, 1); + /* Prepare argc and argv to call Qt application*/ + graphics_priv->root = true; + graphics_priv->argc = 0; + graphics_priv->argv[graphics_priv->argc] = g_strdup("navit"); + graphics_priv->argc ++; + /* Get qt platform from config */ + if ((platform=attr_search(attrs, NULL, attr_qt5_platform))) + { + graphics_priv->argv[graphics_priv->argc] = g_strdup("-platform"); + graphics_priv->argc ++; + graphics_priv->argv[graphics_priv->argc] = g_strdup(platform->u.str); + graphics_priv->argc ++; + } + /* create surrounding application */ +#if USE_QWIDGET + QApplication * internal_app = new QApplication(graphics_priv->argc, graphics_priv->argv); + navit_app = internal_app; +#else + navit_app = new QGuiApplication(graphics_priv->argc, graphics_priv->argv); +#endif + +#ifdef QT_QPAINTER_USE_FREETYPE + graphics_priv->font_freetype_new=font_freetype_new; + font_freetype_new(&graphics_priv->freetype_methods); + meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))graphics_priv->freetype_methods.font_new; + meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))graphics_priv->freetype_methods.get_text_bbox; +#endif + graphics_priv->callbacks = cbl; + graphics_priv->pixmap = NULL; + graphics_priv->use_count = 0; + graphics_priv->painter = NULL; + graphics_priv->parent = NULL; + graphics_priv->overlays=g_hash_table_new(NULL, NULL); + graphics_priv->x = 0; + graphics_priv->y = 0; + graphics_priv->disable = 0; +#if USE_QML + graphics_priv->window = NULL; + graphics_priv->GPriv = NULL; + if(use_qml) + { + /* register our QtQuick widget to allow it's usage within QML */ + qmlRegisterType<QNavitQuick>("com.navit.graphics_qt5", 1, 0, "QNavitQuick"); + /* get our qml application from embedded resources. May be replaced by the + * QtQuick gui component if enabled */ + QQmlApplicationEngine * engine = new QQmlApplicationEngine(); + if(engine != NULL) + { + graphics_priv->GPriv = new GraphicsPriv(graphics_priv); + QQmlContext *context = engine->rootContext(); + context->setContextProperty("graphics_qt5_context", graphics_priv->GPriv); + engine->load(QUrl("qrc:///graphics_qt5.qml")); + /* Get the engine's root window (for resizing) */ + QObject *toplevel = engine->rootObjects().value(0); + graphics_priv->window = qobject_cast<QQuickWindow *> (toplevel); + } + } +#endif +#if USE_QWIDGET + graphics_priv->widget = NULL; + if(use_qwidget) + { + graphics_priv->widget = new QNavitWidget(graphics_priv,NULL,Qt::Window); + } +#endif + if ((fullscreen=attr_search(attrs, NULL, attr_fullscreen)) && (fullscreen->u.num)) { + /* show this maximized */ +#if USE_QML + if(graphics_priv->window != NULL) + graphics_priv->window->setWindowState(Qt::WindowFullScreen); +#endif +#if USE_QWIDGET + if(graphics_priv->widget != NULL) + graphics_priv->widget->setWindowState(Qt::WindowFullScreen); +#endif + } + else + { + /* not maximized. Check what size to use then */ + struct attr * w = NULL; + struct attr * h = NULL; + /* default to desktop size if nothing else is given */ + QRect geomet; + geomet.setHeight(100); + geomet.setWidth(100); + /* get desktop size */ + QScreen *primary = navit_app->primaryScreen(); + if(primary != NULL) + { + geomet = primary->availableGeometry(); + } + /* check for height */ + if ((h = attr_search(attrs, NULL, attr_h)) && (h->u.num > 100)) + geomet.setHeight(h->u.num); + /* check for width */ + if ((w = attr_search(attrs, NULL, attr_w)) && (w->u.num > 100)) + geomet.setWidth(w->u.num); +#if USE_QML + if(graphics_priv->window != NULL) + { + graphics_priv->window->resize(geomet.width(), geomet.height()); + //graphics_priv->window->setFixedSize(geomet.width(), geomet.height()); + } +#endif +#if USE_QWIDGET + if(graphics_priv->widget != NULL) + { + graphics_priv->widget->resize(geomet.width(), geomet.height()); + //graphics_priv->widget->setFixedSize(geomet.width(), geomet.height()); + } +#endif + } + /* generate initial pixmap same size as window */ + if(graphics_priv->pixmap == NULL) + { +#if USE_QML + if(graphics_priv->window != NULL) + graphics_priv->pixmap = new QPixmap(graphics_priv->window->size()); +#endif +#if USE_QWIDGET + if(graphics_priv->widget != NULL) + graphics_priv->pixmap = new QPixmap(graphics_priv->widget->size()); +#endif + if(graphics_priv->pixmap == NULL) + graphics_priv->pixmap = new QPixmap(100,100); + graphics_priv->pixmap->fill(Qt::black); + } + + /* tell Navit our geometry */ + resize_callback(graphics_priv, graphics_priv->pixmap->width(),graphics_priv->pixmap->height()); + + /* show our window */ +#if USE_QML + if(graphics_priv->window != NULL) + graphics_priv->window->show(); +#endif +#if USE_QWIDGET + if(graphics_priv->widget != NULL) + graphics_priv->widget->show(); +#endif + + return graphics_priv; +} + +void +plugin_init(void) +{ +#if USE_QML + Q_INIT_RESOURCE(graphics_qt5); +#endif +// dbg(lvl_debug,"enter\n"); + plugin_register_category_graphics("qt5", graphics_qt5_new); + qt5_event_init(); +} diff --git a/navit/graphics/qt5/graphics_qt5.h b/navit/graphics/qt5/graphics_qt5.h new file mode 100644 index 000000000..2e3f7b85e --- /dev/null +++ b/navit/graphics/qt5/graphics_qt5.h @@ -0,0 +1,101 @@ +#ifndef __graphics_qt_h +#define __graphics_qt_h + +#ifndef USE_QWIDGET +#define USE_QWIDGET 1 +#endif + +#ifndef USE_QML +#define USE_QML 0 +#endif + +#include <glib.h> +#include <QGuiApplication> +#include <QPixmap> +#include <QPainter> +#include <QPen> +#include <QBrush> +#if USE_QML +#include <QQuickWindow> +#include <QObject> +#endif +#if USE_QWIDGET +#include "QNavitWidget.h" +#endif + +#ifndef QT_QPAINTER_USE_FREETYPE +#define QT_QPAINTER_USE_FREETYPE 1 +#endif + +#ifndef SAILFISH_OS +#define SAILFISH_OS 1 +#endif + + +#ifdef QT_QPAINTER_USE_FREETYPE +#include "navit/font/freetype/font_freetype.h" +#endif + +struct graphics_gc_priv; +struct graphics_priv; + +#if USE_QML +class GraphicsPriv : public QObject +{ + Q_OBJECT +public: + GraphicsPriv(struct graphics_priv * gp); + ~GraphicsPriv(); + void emit_update(); + + struct graphics_priv * gp; + +signals: + void update(); +}; +#endif + +struct graphics_priv { +#if USE_QML + GraphicsPriv * GPriv; + QQuickWindow * window; +#endif +#if USE_QWIDGET + QNavitWidget * widget; +#endif + QPixmap * pixmap; + QPainter * painter; + int use_count; + int disable; + int x; + int y; + struct graphics_gc_priv * background_graphics_gc_priv; +#ifdef QT_QPAINTER_USE_FREETYPE + struct font_priv * (*font_freetype_new)(void *meth); + struct font_freetype_methods freetype_methods; +#endif +#ifdef SAILFISH_OS + struct callback *display_on_cb; + struct event_timeout *display_on_ev; +#endif + struct callback_list* callbacks; + GHashTable *overlays; + struct graphics_priv * parent; + bool root; + int argc; + char * argv[4]; +}; + + +struct graphics_gc_priv { + struct graphics_priv * graphics_priv; + QPen * pen; + QBrush * brush; +}; +/* central exported application info */ +extern QGuiApplication * navit_app; + +void resize_callback(struct graphics_priv * gr, int w, int h); + +#endif + diff --git a/navit/graphics/qt5/graphics_qt5.qml b/navit/graphics/qt5/graphics_qt5.qml new file mode 100644 index 000000000..a797c8eb9 --- /dev/null +++ b/navit/graphics/qt5/graphics_qt5.qml @@ -0,0 +1,15 @@ +import com.navit.graphics_qt5 1.0 +import QtQuick 2.2 +import QtQuick.Window 2.0 + +Window { + width: 200; height: 200 + QNavitQuick { + id: navit1 + anchors.fill: parent + focus: true + Component.onCompleted: { + navit1.setGraphicContext(graphics_qt5_context) + } + } +} diff --git a/navit/graphics/qt5/graphics_qt5.qrc b/navit/graphics/qt5/graphics_qt5.qrc new file mode 100644 index 000000000..4c82492ee --- /dev/null +++ b/navit/graphics/qt5/graphics_qt5.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/"> + <file>graphics_qt5.qml</file> + </qresource> +</RCC> diff --git a/navit/graphics/qt_qpainter/Makefile.am b/navit/graphics/qt_qpainter/Makefile.am deleted file mode 100644 index 8c55917c7..000000000 --- a/navit/graphics/qt_qpainter/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @QT_GUI_CFLAGS@ @QT_SVG_CFLAGS@ @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -I$(top_srcdir)/navit/graphics/qt_qpainter -DMODULE=graphics_qt_qpainter -modulegraphics_LTLIBRARIES = libgraphics_qt_qpainter.la -libgraphics_qt_qpainter_la_SOURCES = graphics_qt_qpainter.cpp graphics_qt_qpainter.h RenderArea.cpp RenderArea.h RenderArea.moc -libgraphics_qt_qpainter_la_LDFLAGS = @QT_GUI_LIBS@ @QT_SVG_LIBS@ -module -avoid-version -if GRAPHICS_QT_QPAINTER -BUILT_SOURCES = RenderArea.moc -RenderArea.moc: - @MOC@ $(srcdir)/RenderArea.h >RenderArea.moc || touch RenderArea.moc - -distclean-local: - $(RM) RenderArea.moc -endif diff --git a/navit/graphics/sdl/Makefile.am b/navit/graphics/sdl/Makefile.am deleted file mode 100644 index 1c9b4056d..000000000 --- a/navit/graphics/sdl/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @SDL_CFLAGS@ @FREETYPE2_CFLAGS@ @LIBPDL_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_sdl -modulegraphics_LTLIBRARIES = libgraphics_sdl.la -libgraphics_sdl_la_SOURCES = graphics_sdl.c raster.c raster.h -libgraphics_sdl_la_LDFLAGS = @SDL_LIBS@ @SDL_IMAGE_LIBS@ @FREETYPE2_LIBS@ @LIBPDL_LIBS@ -module -avoid-version diff --git a/navit/graphics/win32/Makefile.am b/navit/graphics/win32/Makefile.am deleted file mode 100644 index 15ec2441c..000000000 --- a/navit/graphics/win32/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @ZLIB_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=graphics_win32 -libgraphics_win32_la_SOURCES = graphics_win32.c xpm2bmp.c -libgraphics_win32_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -if !SUPPORT_WIN32CE -libgraphics_win32_la_LDFLAGS += -Wl,-lgdi32 -endif -if PLUGINS -modulegraphics_LTLIBRARIES = libgraphics_win32.la -else -noinst_LTLIBRARIES = libgraphics_win32.la -endif diff --git a/navit/gui/Makefile.am b/navit/gui/Makefile.am deleted file mode 100644 index 10086b5a1..000000000 --- a/navit/gui/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -SUBDIRS= -if GUI_INTERNAL - SUBDIRS += internal -endif -if GUI_GTK - SUBDIRS += gtk -endif -if GUI_WIN32 - SUBDIRS += win32 -endif -if GUI_QML - SUBDIRS += qml -endif
\ No newline at end of file diff --git a/navit/gui/gtk/Makefile.am b/navit/gui/gtk/Makefile.am deleted file mode 100644 index ddcfc2ae3..000000000 --- a/navit/gui/gtk/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = -I$(top_srcdir)/navit @NAVIT_CFLAGS@ @HILDON_CFLAGS@ @GTK2_CFLAGS@ -DMODULE=gui_gtk -modulegui_LTLIBRARIES = libgui_gtk.la -libgui_gtk_la_SOURCES = datawindow.c destination.c gui_gtk_statusbar.c gui_gtk_action.c gui_gtk_window.c gui_gtk_poi.c gui_gtk.h gui_gtk_poi.h -libgui_gtk_la_LIBADD = @GTK2_LIBS@ -libgui_gtk_la_LDFLAGS = -module -avoid-version diff --git a/navit/gui/internal/Makefile.am b/navit/gui/internal/Makefile.am deleted file mode 100644 index ed819ce4e..000000000 --- a/navit/gui/internal/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/navit -I$(top_srcdir)/navit/fib-1.1 @NAVIT_CFLAGS@ -DMODULE=gui_internal -if PLUGINS -modulegui_LTLIBRARIES = libgui_internal.la -else -noinst_LTLIBRARIES = libgui_internal.la -endif -libgui_internal_la_SOURCES = gui_internal_bookmark.c gui_internal.c gui_internal_command.c gui_internal_gesture.c gui_internal_html.c gui_internal_keyboard.c gui_internal_menu.c gui_internal_poi.c gui_internal_search.c gui_internal_widget.c gui_internal_bookmark.h gui_internal_command.h gui_internal_gesture.h gui_internal.h gui_internal_html.h gui_internal_keyboard.h gui_internal_menu.h gui_internal_poi.h gui_internal_priv.h gui_internal_search.h gui_internal_widget.h -libgui_internal_la_LIBADD = -libgui_internal_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index e508b8988..b0694a476 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -2043,6 +2043,7 @@ gui_internal_cmd_set_active_profile(struct gui_priv *this, struct struct attr vehicle_name_attr; char *vehicle_name = NULL; struct attr profilename_attr; + struct attr vehicle; // Get the vehicle name vehicle_get_attr(v, attr_name, &vehicle_name_attr, NULL); @@ -2058,15 +2059,23 @@ gui_internal_cmd_set_active_profile(struct gui_priv *this, struct dbg(lvl_error, "Unable to set the vehicle's profile name\n"); } + navit_set_vehicleprofile_name(this->nav,profilename); + + save_vehicle_xml(v); + // Notify Navit that the routing should be re-done if this is the // active vehicle. if (gui_internal_is_active_vehicle(this, v)) { - struct attr vehicle; - vehicle.type=attr_vehicle; vehicle.u.vehicle=v; - navit_set_attr(this->nav, &vehicle); } - save_vehicle_xml(v); + else { + + vehicle.u.vehicle=NULL; + } + + vehicle.type=attr_vehicle; + navit_set_attr(this->nav, &vehicle); + gui_internal_prune_menu_count(this, 1, 0); gui_internal_menu_vehicle_settings(this, v, vehicle_name); @@ -3476,6 +3485,12 @@ static struct gui_priv * gui_internal_new(struct navit *nav, struct gui_methods this->radius=10; if( (attr=attr_search(attrs,NULL,attr_font))) this->font_name=g_strdup(attr->u.str); + + if((attr=attr_search(attrs, NULL, attr_hide_impossible_next_keys))) + this->hide_keys = attr->u.num; + else + this->hide_keys = 0; + this->data.priv=this; this->data.gui=&gui_internal_methods_ext; this->data.widget=&gui_internal_widget_methods; diff --git a/navit/gui/internal/gui_internal.h b/navit/gui/internal/gui_internal.h index ea5ab79ae..1a5cd13d3 100644 --- a/navit/gui/internal/gui_internal.h +++ b/navit/gui/internal/gui_internal.h @@ -2,6 +2,8 @@ struct widget; struct graphics_image; struct gui_priv; +#define STATE_INVISIBLE 1 +#define STATE_SELECTED 2 #define STATE_HIGHLIGHTED 4 #define STATE_SENSITIVE 8 #define STATE_EDIT 16 diff --git a/navit/gui/internal/gui_internal_priv.h b/navit/gui/internal/gui_internal_priv.h index 0dee59db2..37b09d62a 100644 --- a/navit/gui/internal/gui_internal_priv.h +++ b/navit/gui/internal/gui_internal_priv.h @@ -144,7 +144,7 @@ struct gui_priv { } gesture_ring[GESTURE_RINGSIZE]; int gesture_ring_last, gesture_ring_first; - + int hide_keys; //Flag to set the keyboard mode 1: hide impossible keys on search; 0: highlight them. int results_map_population; }; diff --git a/navit/gui/internal/gui_internal_search.c b/navit/gui/internal/gui_internal_search.c index e5e137e07..ceeeb7438 100644 --- a/navit/gui/internal/gui_internal_search.c +++ b/navit/gui/internal/gui_internal_search.c @@ -192,14 +192,22 @@ gui_internal_find_next_possible_key(char *search_text, char *wm_name, char *poss { gchar* trunk_name; if (item_name) { - trunk_name = g_strrstr(item_name, search_text); + + trunk_name = linguistics_expand_special(item_name,1); + if(!trunk_name){ + trunk_name = g_strrstr(item_name, search_text); + } + if (trunk_name) { - char next_char = trunk_name[strlen(search_text)]; + int next_char_pos = strlen(search_text); + char next_char = trunk_name[next_char_pos]; int i; int len = strlen(possible_keys); + for(i = 0; (i<len) && (possible_keys[i] != next_char) ;i++) ; - if (i==len || !len) { - possible_keys[len]=trunk_name[strlen(search_text)]; + + if ((i==len || !len) && !strncmp(trunk_name, search_text, next_char_pos)) { + possible_keys[len]=trunk_name[next_char_pos]; possible_keys[len+1]='\0'; } dbg(lvl_info,"searching for %s, found: %s, currently possible_keys: %s \n", search_text, item_name, possible_keys); @@ -211,6 +219,7 @@ static void gui_internal_highlight_possible_keys(struct gui_priv *this, char *possible_keys) { struct menu_data *md; + int first_available_key_found = 0; if (!this->keyboard) return; @@ -225,12 +234,30 @@ gui_internal_highlight_possible_keys(struct gui_priv *this, char *possible_keys) while (lk2) { struct widget *child_=lk2->data; lk2=g_list_next(lk2); - if (child_->data && strcmp("\b", child_->data)) { // FIXME don't disable special keys + // The data_free part is an evil hack based on the observation that + // regular keys have set it to non-NULL whereas special keys appear + // to have it set to NULL. + if (child_->data && strcmp("\b", child_->data) && child_->data_free) { if ( (strlen(possible_keys) == 0) || (g_strrstr(possible_keys, child_->data)!=NULL ) ) { - child_->state|= STATE_HIGHLIGHTED|STATE_SENSITIVE|STATE_CLEAR ; + if(this->hide_keys){ + child_->state|= STATE_SENSITIVE|STATE_CLEAR ; + child_->state&= ~(STATE_INVISIBLE); + }else{ + child_->state|= STATE_SENSITIVE|STATE_CLEAR|STATE_HIGHLIGHTED ; + } + // Select and highlight the first possible button. + if (!first_available_key_found) { + gui_internal_highlight_do(this, child_); + first_available_key_found=1; + } } else { - child_->state&= ~STATE_HIGHLIGHTED; + if(this->hide_keys){ + child_->state&= ~(STATE_SELECTED|STATE_SENSITIVE) ; + child_->state|= STATE_INVISIBLE; + }else{ + child_->state&= ~(STATE_HIGHLIGHTED); + } } gui_internal_widget_render(this,child_); } diff --git a/navit/gui/internal/gui_internal_widget.c b/navit/gui/internal/gui_internal_widget.c index 1dd28837f..3e1993025 100644 --- a/navit/gui/internal/gui_internal_widget.c +++ b/navit/gui/internal/gui_internal_widget.c @@ -753,7 +753,7 @@ gui_internal_widget_destroy(struct gui_priv *this, struct widget *w) void gui_internal_widget_render(struct gui_priv *this, struct widget *w) { - if(w->p.x > this->root.w || w->p.y > this->root.h) + if(w->p.x > this->root.w || w->p.y > this->root.h || w->state & STATE_INVISIBLE) return; switch (w->type) { @@ -820,6 +820,10 @@ gui_internal_scroll_buttons_init(struct gui_priv *this, struct widget *widget, s sb->button_box=gui_internal_box_new(this, gravity_center|orientation_horizontal); sb->button_box->background=this->background; + if(this->hide_keys){ + sb->prev_button->state |= STATE_INVISIBLE; + sb->next_button->state |= STATE_INVISIBLE; + } sb->prev_button->state &= ~STATE_SENSITIVE; sb->next_button->state &= ~STATE_SENSITIVE; gui_internal_widget_append(sb->button_box, sb->prev_button); @@ -1264,7 +1268,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w) cur_column=g_list_next(cur_column)) { struct widget * cur_widget = (struct widget*) cur_column->data; - cur_widget->state |= STATE_OFFSCREEN; + if(this->hide_keys){ + cur_widget->state |= STATE_INVISIBLE; + cur_widget->state &= ~STATE_SENSITIVE; + }else{ + cur_widget->state |= STATE_OFFSCREEN; + } } row = g_list_next(row); } @@ -1308,7 +1317,12 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w) /* We pack the widget before rendering to ensure that the x and y * coordinates get pushed down. */ - cur_widget->state &= ~STATE_OFFSCREEN; + if(this->hide_keys){ + cur_widget->state &= ~STATE_INVISIBLE; + cur_widget->state |= STATE_SENSITIVE; + }else{ + cur_widget->state &= ~STATE_OFFSCREEN; + } gui_internal_widget_pack(this,cur_widget); gui_internal_widget_render(this,cur_widget); @@ -1317,8 +1331,13 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w) max_height = dim->height; } } else { - /* Mark contents that we don't have space for. */ - cur_widget->state |= STATE_OFFSCREEN; + /* Deactivate contents that we don't have space for. */ + if(this->hide_keys){ + cur_widget->state |= STATE_INVISIBLE; + cur_widget->state &= ~STATE_SENSITIVE; + }else{ + cur_widget->state |= STATE_OFFSCREEN; + } } } @@ -1337,6 +1356,10 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w) } /* By default, hide all scroll buttons. */ + if(this->hide_keys){ + table_data->scroll_buttons.next_button->state|= STATE_INVISIBLE; + table_data->scroll_buttons.prev_button->state|= STATE_INVISIBLE; + } table_data->scroll_buttons.next_button->state&= ~STATE_SENSITIVE; table_data->scroll_buttons.prev_button->state&= ~STATE_SENSITIVE; @@ -1359,11 +1382,13 @@ gui_internal_table_render(struct gui_priv * this, struct widget * w) if(!drawing_space_left) { table_data->scroll_buttons.next_button->state|= STATE_SENSITIVE; + table_data->scroll_buttons.next_button->state&= ~STATE_INVISIBLE; } if(table_data->top_row != w->children) { table_data->scroll_buttons.prev_button->state|= STATE_SENSITIVE; + table_data->scroll_buttons.prev_button->state&= ~STATE_INVISIBLE; } gui_internal_widget_render(this,table_data->scroll_buttons.button_box); } diff --git a/navit/gui/qml/Makefile.am b/navit/gui/qml/Makefile.am deleted file mode 100644 index a52b399b2..000000000 --- a/navit/gui/qml/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @QT_DECLARATIVE_CFLAGS@ @QT_GUI_CFLAGS@ @QT_XML_CFLAGS@ @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=gui_qml -modulegui_LTLIBRARIES = libgui_qml.la -libgui_qml_la_SOURCES = proxy.moc proxy.h ngqpoint.moc ngqpoint.h searchProxy.moc routeProxy.h searchProxy.h bookmarksProxy.moc bookmarksProxy.h vehicleProxy.moc vehicleProxy.h navitProxy.moc navitProxy.h guiProxy.moc guiProxy.h gui_qml.moc gui_qml.cpp -libgui_qml_la_LDFLAGS = @QT_DECLARATIVE_LIBS@ @QT_GUI_LIBS@ @QT_XML_LIBS@ -module -avoid-version -BUILT_SOURCES = gui_qml.moc proxy.moc ngqpoint.moc routeProxy.moc searchProxy.moc bookmarksProxy.moc vehicleProxy.moc navitProxy.moc guiProxy.moc -%.moc: %.h - @MOC@ $(srcdir)/$< > $@ || touch $@ -%.moc: %.cpp - @MOC@ $(srcdir)/$< > $@ || touch $@ -distclean-local: - -$(RM) *.moc - -SUBDIRS=skins diff --git a/navit/gui/qml/skins/Makefile.am b/navit/gui/qml/skins/Makefile.am deleted file mode 100644 index e0f29a206..000000000 --- a/navit/gui/qml/skins/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS=navit
\ No newline at end of file diff --git a/navit/gui/qml/skins/navit/Makefile.am b/navit/gui/qml/skins/navit/Makefile.am deleted file mode 100644 index 0842a330c..000000000 --- a/navit/gui/qml/skins/navit/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc - -SKIN = navit - -qmldir=$(skinsdir)/$(SKIN) - -qml_DATA = ButtonIcon.qml ToggleSwitch.qml ToggleButton.qml ListSelector.qml Slider.qml CommonHighlight.qml Cellar.qml main.qml PageMain.qml PageNavigate.qml PageAbout.qml PageBookmarksAdd.qml PageBookmarks.qml PageRoute.qml PageSearch.qml PageSearchSelector.qml PageSettingsDisplay.qml PageSettingsLocale.qml PageSettings.qml PageSettingsRules.qml PageSettingsTools.qml PageSettingsVehicle.qml PagePoi.qml PagePointInfo.qml -qml_DATA += background.svg knob.svg -qml_DATA += command.js pagenavigation.js diff --git a/navit/gui/win32/Makefile.am b/navit/gui/win32/Makefile.am deleted file mode 100644 index 06d91fac6..000000000 --- a/navit/gui/win32/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = -I$(top_srcdir)/navit -I$(top_srcdir)/navit/graphics/win32 @NAVIT_CFLAGS@ -DMODULE=gui_win32 -if PLUGINS -modulegui_LTLIBRARIES = libgui_win32.la -else -noinst_LTLIBRARIES = libgui_win32.la -endif -libgui_win32_la_SOURCES = gui_win32.c win32_gui_destination.c win32_gui_notify.c ceglue.h ceglue.c -libgui_win32_la_LIBADD = -libgui_win32_la_LDFLAGS = -module -avoid-version diff --git a/navit/main.c b/navit/main.c index 986bcb13b..25dcb5267 100644 --- a/navit/main.c +++ b/navit/main.c @@ -81,9 +81,9 @@ setenv(char *var, char *val, int overwrite) * '~' replaced with HOME */ static char *environment_vars[][5]={ - {"NAVIT_LIBDIR", ":", "::/navit", ":\\lib", ":/lib"}, - {"NAVIT_SHAREDIR", ":", ":/share/navit", ":", ":/share"}, - {"NAVIT_LOCALEDIR", ":/../locale",":/share/locale",":\\locale", ":/locale"}, + {"NAVIT_LIBDIR", ":", ":/"LIB_DIR, ":\\lib", ":/lib"}, + {"NAVIT_SHAREDIR", ":", ":/"SHARE_DIR, ":", ":/share"}, + {"NAVIT_LOCALEDIR", ":/../locale",":/"LOCALE_DIR, ":\\locale", ":/locale"}, {"NAVIT_USER_DATADIR",":", "~/.navit", ":\\data", ":/home"}, {"NAVIT_LOGFILE", NULL, NULL, ":\\navit.log",NULL}, {"NAVIT_LIBPREFIX", "*/.libs/", NULL, NULL, NULL}, diff --git a/navit/map/Makefile.am b/navit/map/Makefile.am deleted file mode 100644 index d2b6efdc5..000000000 --- a/navit/map/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -SUBDIRS= -if MAP_BINFILE - SUBDIRS+=binfile -endif -if MAP_FILTER - SUBDIRS+=filter -endif -if HAVELIBGARMIN - SUBDIRS+=garmin -endif -if MAP_MG - SUBDIRS+=mg -endif -if MAP_SHAPEFILE - SUBDIRS+=shapefile -endif -if MAP_TEXTFILE - SUBDIRS+=textfile -endif -if MAP_CSV - SUBDIRS+=csv -endif - -DIST_SUBDIRS=mg textfile csv binfile garmin shapefile filter diff --git a/navit/map/binfile/Makefile.am b/navit/map/binfile/Makefile.am deleted file mode 100644 index 6bf671175..000000000 --- a/navit/map/binfile/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_binfile -if PLUGINS - modulemap_LTLIBRARIES = libmap_binfile.la -else - noinst_LTLIBRARIES = libmap_binfile.la -endif -libmap_binfile_la_SOURCES = binfile.c -libmap_binfile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/map/binfile/binfile.c b/navit/map/binfile/binfile.c index 6b5108659..9c6d9a2ef 100644 --- a/navit/map/binfile/binfile.c +++ b/navit/map/binfile/binfile.c @@ -2066,6 +2066,7 @@ binmap_search_new(struct map_priv *map, struct item *item, struct attr *search, break; case attr_town_name: case attr_town_or_district_name: + case attr_town_postal: map_rec = map_rect_new_binfile(map, NULL); if (!map_rec) break; @@ -2074,8 +2075,6 @@ binmap_search_new(struct map_priv *map, struct item *item, struct attr *search, msp->mr = map_rec; return msp; break; - case attr_town_postal: - break; case attr_street_name: if (! item->map) break; @@ -2192,13 +2191,15 @@ duplicate_equal(gconstpointer a, gconstpointer b) * @param msp pointer to private map search data * @param item item to check * @param attr_type + * @param attr_type2, optional, allows to check for duplicate combinations of 2 attributes * returns - pointer to new struct duplicate, if this item is not already exist in hash * - NULL if this item already exists in duplicate hash or doesnt have an attr_type attr; */ static struct duplicate* -duplicate_test(struct map_search_priv *msp, struct item *item, enum attr_type attr_type) +duplicate_test(struct map_search_priv *msp, struct item *item, enum attr_type attr_type, enum attr_type attr_type2) { - struct attr attr; +struct attr attr; + struct attr attr2; int len; char *buffer; struct duplicate *d; @@ -2209,6 +2210,10 @@ duplicate_test(struct map_search_priv *msp, struct item *item, enum attr_type at if (!item_attr_get(item, attr_type, &attr)) return NULL; len=sizeof(struct coord)+strlen(attr.u.str)+1; + binfile_attr_rewind(item->priv_data); + if (attr_type2 && item_attr_get(item, attr_type2, &attr2) && attr2.u.str) { + len = len + strlen(attr2.u.str); + } buffer=g_alloca(sizeof(char)*len); d=(struct duplicate *)buffer; if (!item_coord_get(item, &d->c, 1)) { @@ -2216,6 +2221,9 @@ duplicate_test(struct map_search_priv *msp, struct item *item, enum attr_type at d->c.y=0; } strcpy(d->str, attr.u.str); + if(attr_type2 && attr2.u.str){ + strcat(d->str,attr2.u.str); + } binfile_coord_rewind(item->priv_data); binfile_attr_rewind(item->priv_data); if (!g_hash_table_lookup(msp->search_results, d)) { @@ -2238,17 +2246,18 @@ duplicate_insert(struct map_search_priv *msp, struct duplicate *d) } /** - * @brief Check if item is dupicate and update duplicate hash if needed. + * @brief Check if item is duplicate and update duplicate hash if needed. * @param msp pointer to private map search data * @param item item to check * @param attr_type + * @param attr_type2, optional, allows to check for duplicate combinations of 2 attributes * @returns 0 if item is not a duplicate * 1 if item is duplicate or doesn't have required attr_type attribute */ static int -duplicate(struct map_search_priv *msp, struct item *item, enum attr_type attr_type) +duplicate(struct map_search_priv *msp, struct item *item, enum attr_type attr_type, enum attr_type attr_type2) { - struct duplicate *d=duplicate_test(msp, item, attr_type); + struct duplicate *d=duplicate_test(msp, item, attr_type, attr_type2); if(!d) return 1; duplicate_insert(msp,d); @@ -2300,18 +2309,31 @@ binmap_search_get_item(struct map_search_priv *map_search) while ((it = map_rect_get_item_binfile(map_search->mr))) { int has_house_number=0; switch (map_search->search.type) { + case attr_town_postal: case attr_town_name: case attr_district_name: case attr_town_or_district_name: + if (map_search->mr->tile_depth > 1 && item_is_town(*it) && map_search->search.type == attr_town_postal) { + if (binfile_attr_get(it->priv_data, attr_town_postal, &at)) { + if (!linguistics_compare(at.u.str, map_search->search.u.str, mode)) { + /* check for duplicate combination of town_name and town_postal */ + if (!duplicate(map_search, it, attr_town_name, attr_town_postal)) { + return it; + } else { + break; + } + } + } + } if (map_search->mr->tile_depth > 1 && item_is_town(*it) && map_search->search.type != attr_district_name) { if (binfile_attr_get(it->priv_data, attr_town_name_match, &at) || binfile_attr_get(it->priv_data, attr_town_name, &at)) { - if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_town_name)) + if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_town_name,0)) return it; } } if (map_search->mr->tile_depth > 1 && item_is_district(*it) && map_search->search.type != attr_town_name) { if (binfile_attr_get(it->priv_data, attr_district_name_match, &at) || binfile_attr_get(it->priv_data, attr_district_name, &at)) { - if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_town_name)) + if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_town_name,0)) return it; } } @@ -2319,7 +2341,7 @@ binmap_search_get_item(struct map_search_priv *map_search) case attr_street_name: if (map_search->mode == 1) { if (binfile_attr_get(it->priv_data, attr_street_name_match, &at) || binfile_attr_get(it->priv_data, attr_street_name, &at)) { - if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_street_name)) { + if (!linguistics_compare(at.u.str, map_search->search.u.str, mode) && !duplicate(map_search, it, attr_street_name,0)) { return it; } } @@ -2337,7 +2359,7 @@ binmap_search_get_item(struct map_search_priv *map_search) /* Extracting all coords here makes duplicate_new() not consider them (we don't want all * street segments to be reported as separate streets). */ while(item_coord_get(it,c,128)>0); - d=duplicate_test(map_search, it, attr_label); + d=duplicate_test(map_search, it, attr_label,0); if(!d) break; @@ -2374,7 +2396,7 @@ binmap_search_get_item(struct map_search_priv *map_search) if ((binfile_attr_get(it->priv_data, attr_street_name, &at2) || map_search->mode!=2) && !linguistics_compare(at.u.str, map_search->search.u.str, mode) && !strcmp(at2.u.str, map_search->parent_name)) { - if (!duplicate(map_search, it, attr_house_number)) + if (!duplicate(map_search, it, attr_house_number,0)) { binfile_attr_rewind(it->priv_data); return it; @@ -2386,12 +2408,12 @@ binmap_search_get_item(struct map_search_priv *map_search) struct attr at2; if ((binfile_attr_get(it->priv_data, attr_street_name, &at2) || map_search->mode!=2) && !strcmp(at2.u.str, map_search->parent_name)) { - if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_2)) + if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_2,0)) { binfile_attr_rewind(it->priv_data); return it; } - else if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_1)) + else if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_1,0)) { binfile_attr_rewind(it->priv_data); return it; diff --git a/navit/map/csv/Makefile.am b/navit/map/csv/Makefile.am deleted file mode 100644 index d8670ea2c..000000000 --- a/navit/map/csv/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_csv -if PLUGINS - modulemap_LTLIBRARIES = libmap_csv.la -else - noinst_LTLIBRARIES = libmap_csv.la -endif -libmap_csv_la_SOURCES = csv.c csv.h quadtree.c quadtree.h -libmap_csv_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/map/filter/Makefile.am b/navit/map/filter/Makefile.am deleted file mode 100644 index 3bd14e8bf..000000000 --- a/navit/map/filter/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_filter -if PLUGINS - modulemap_LTLIBRARIES = libmap_filter.la -else - noinst_LTLIBRARIES = libmap_filter.la -endif -libmap_filter_la_SOURCES = filter.c -libmap_filter_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/map/garmin/Makefile.am b/navit/map/garmin/Makefile.am deleted file mode 100644 index 8fa224fc1..000000000 --- a/navit/map/garmin/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_garmin -AM_CPPFLAGS+= @LIBGARMIN_CFLAGS@ -INCLUDES=-I$(top_srcdir)/navit/map/garmin/libgarmin -AM_CPPFLAGS+=-I$(top_srcdir)/navit/map/garmin/libgarmin -AM_CPPFLAGS+=-I$(srcdir) - -modulemap_LTLIBRARIES = libmap_garmin.la -libmap_garmin_la_SOURCES = garmin.c garmin.h gar2navit.c gar2navit.h -libmap_garmin_la_LIBADD = @LIBGARMIN_LIBS@ -libmap_garmin_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -nodist_libmap_garmin_la_SOURCES = g2nbuiltin.h -builddir = @builddir@ - -gar2navit.l$(OBJEXT): g2nbuiltin.h - -CLEANFILES = g2nbuiltin.h - -noinst_PROGRAMS=gentypes$(EXEEXT) -gentypes_SOURCES=gentypes.c - -gentypes.$(OBJEXT): gentypes.c - $(CC_FOR_BUILD) -I$(top_srcdir)/navit -I$(top_srcdir) -c -o $@ $< - -gentypes$(EXEEXT): $(gentypes_OBJECTS) $(gentypes_DEPENDENCIES) - @rm -f gentypes$(EXEEXT) - $(CCLD_FOR_BUILD) -o $@ $(gentypes_OBJECTS) - -g2nbuiltin.h: gentypes$(EXEEXT) garmintypes.txt - ./gentypes$(EXEEXT) $(top_srcdir)/navit/map/garmin/garmintypes.txt $@ - -EXTRA_DIST = garmintypes.txt - diff --git a/navit/map/garmin_img/Makefile.am b/navit/map/garmin_img/Makefile.am deleted file mode 100644 index dbbcd9b55..000000000 --- a/navit/map/garmin_img/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_garmin_img -modulemap_LTLIBRARIES = libmap_garmin_img.la -libmap_garmin_img_la_SOURCES = garmin_img.c -libmap_garmin_img_la_LDFLAGS = -module -avoid-version diff --git a/navit/map/mg/Makefile.am b/navit/map/mg/Makefile.am deleted file mode 100644 index ee05be835..000000000 --- a/navit/map/mg/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_mg -if PLUGINS - modulemap_LTLIBRARIES = libmap_mg.la -else - noinst_LTLIBRARIES = libmap_mg.la -endif -libmap_mg_la_SOURCES = map.c block.c town.c tree.c poly.c street.c mg.h -libmap_mg_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/map/shapefile/Makefile.am b/navit/map/shapefile/Makefile.am deleted file mode 100644 index f23fb8278..000000000 --- a/navit/map/shapefile/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @SHAPEFILE_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_shapefile -if PLUGINS - modulemap_LTLIBRARIES = libmap_shapefile.la -else - noinst_LTLIBRARIES = libmap_shapefile.la -endif -libmap_shapefile_la_SOURCES = shapefile.c -libmap_shapefile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -if HAVE_SYSTEM_SHAPEFILELIB -libmap_shapefile_la_LIBADD = @SHAPEFILE_LIBS@ -else -libmap_shapefile_la_LIBADD = $(top_builddir)/navit/support/shapefile/libsupport_shapefile.la -endif diff --git a/navit/map/textfile/Makefile.am b/navit/map/textfile/Makefile.am deleted file mode 100644 index b3190e7f7..000000000 --- a/navit/map/textfile/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=map_textfile -if PLUGINS - modulemap_LTLIBRARIES = libmap_textfile.la -else - noinst_LTLIBRARIES = libmap_textfile.la -endif -libmap_textfile_la_SOURCES = textfile.c textfile.h -libmap_textfile_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/maps/Makefile.am b/navit/maps/Makefile.am deleted file mode 100644 index 798ca6d5c..000000000 --- a/navit/maps/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -include $(top_srcdir)/Makefile.inc - -.SECONDARY: - -SAMPLE_MAP=osm_bbox_11.3,47.9,11.7,48.2 - -maptool_args=--attr-debug-level=5 -maptool=$(top_builddir)/navit/maptool/maptool - -maps_DATA = $(SAMPLE_MAP).bin $(SAMPLE_MAP).xml - -SUFFIXES=.osm.bz2 .osm.pbf .txt .shp .osm - -samplemap: $(SAMPLE_MAP).bin - -.osm.bin: - echo "Converting osm map" - $(maptool) $(maptool_args) $@.tmp <$< - mv $@.tmp $@ - -.txt.bin: - $(maptool) $(maptool_args) $@.tmp -p $(top_builddir)/navit/map/textfile/libmap_textfile.la -m "type=textfile data="$< - mv $@.tmp $@ - -.shp.bin: - $(maptool) $(maptool_args) $@.tmp -p $(top_builddir)/navit/map/shapefile/libmap_shapefile.la -m "type=shapefile data=$(subst .shp,,$<) $(SHAPEFILE_ATTRIBUTES)" - mv $@.tmp $@ - -.osm.bz2.bin: - echo "Converting osm map" - bzcat $< | $(maptool) $(maptool_args) $@.tmp - mv $@.tmp $@ - -.osm.pbf.bin: - echo "Converting osm map" - $(maptool) --protobuf $(maptool_args) $@.tmp <$< - mv $@.tmp $@ - -.bin.xml: - echo '<map type="binfile" enabled="yes" data="$$NAVIT_SHAREDIR/maps/$<"/>' >$@ - - -$(SAMPLE_MAP).osm.bz2: - echo "Downloading osm sample map" - wget -O $(SAMPLE_MAP).osm.bz2.tmp http://www.navit-project.org/maps/$(SAMPLE_MAP).osm.bz2 - mv $(SAMPLE_MAP).osm.bz2.tmp $(SAMPLE_MAP).osm.bz2 - -distclean-local: - rm -f $(SAMPLE_MAP).osm.bz2 $(SAMPLE_MAP).bin $(SAMPLE_MAP).xml - -all: diff --git a/navit/maptool/Makefile.am b/navit/maptool/Makefile.am deleted file mode 100644 index 95454a058..000000000 --- a/navit/maptool/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include $(top_srcdir)/Makefile.inc -if !SUPPORT_ANDROID - bin_PROGRAMS = maptool - noinst_LTLIBRARIES = libmaptool.la -endif - -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit @ZLIB_CFLAGS@ @POSTGRESQL_CFLAGS@ -DMODULE=maptool -libmaptool_la_SOURCES = boundaries.c buffer.c ch.c coastline.c itembin.c itembin_buffer.c misc.c osm.c osm_o5m.c osm_psql.c osm_protobuf.c osm_protobufdb.c osm_relations.c osm_xml.c sourcesink.c tempfile.c tile.c zip.c maptool.h generated-code/fileformat.pb-c.c generated-code/fileformat.pb-c.h generated-code/osmformat.pb-c.c generated-code/osmformat.pb-c.h google/protobuf-c/protobuf-c.c google/protobuf-c/protobuf-c.h google/protobuf-c/protobuf-c-private.h -maptool_SOURCES = maptool.c -maptool_LDADD = libmaptool.la ../libnavit.la @NAVIT_LIBS@ @WORDEXP_LIBS@ @ZLIB_LIBS@ @POSTGRESQL_LIBS@ @CRYPTO_LIBS@ @INTLLIBS@ @LIBC_LIBS@ diff --git a/navit/navit.c b/navit/navit.c index 237498038..8ef8d5700 100644 --- a/navit/navit.c +++ b/navit/navit.c @@ -3611,7 +3611,7 @@ navit_set_vehicleprofile(struct navit *this_, struct vehicleprofile *vp) return 1; } -static int +int navit_set_vehicleprofile_name(struct navit *this_, char *name) { struct attr attr; @@ -3638,17 +3638,23 @@ navit_set_vehicle(struct navit *this_, struct navit_vehicle *nv) if (navit_set_vehicleprofile_name(this_, attr.u.str)) return; } - if (!navit_set_vehicleprofile_name(this_,"car")) { - /* We do not have a fallback "car" profile - * so lets set any profile */ - GList *l; - l=this_->vehicleprofiles; - if (l) { - this_->vehicleprofile=l->data; - if (this_->route) - route_set_profile(this_->route, this_->vehicleprofile); + if (!this_->vehicleprofile) { // When deactivating vehicle, keep the last profile if any + if (!navit_set_vehicleprofile_name(this_,"car")) { + /* We do not have a fallback "car" profile + * so lets set any profile */ + GList *l; + l=this_->vehicleprofiles; + if (l) { + this_->vehicleprofile=l->data; + if (this_->route) + route_set_profile(this_->route, this_->vehicleprofile); + } } } + else { + if (this_->route) + route_set_profile(this_->route, this_->vehicleprofile); + } } /** @@ -3777,61 +3783,59 @@ navit_layout_switch(struct navit *n) if (l->dayname || l->nightname) { //Ok, we know that we have profile to switch - //Check that we aren't calculating too fast - if (vehicle_get_attr(n->vehicle->vehicle, attr_position_time_iso8601,&iso8601_attr,NULL)==1) { - currTs=iso8601_to_secs(iso8601_attr.u.str); - dbg(lvl_debug,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60); - } - dbg(lvl_debug,"prevTs: %u:%u\n",n->prevTs%86400/3600,((n->prevTs%86400)%3600)/60); - if (currTs-(n->prevTs)<60) { - //We've have to wait a little - return; - } - if (n->auto_switch == FALSE) - return; - if (sscanf(iso8601_attr.u.str,"%d-%02d-%02dT",&year,&month,&day) != 3) - return; - if (vehicle_get_attr(n->vehicle->vehicle, attr_position_valid, &valid_attr,NULL) && valid_attr.u.num==attr_position_valid_invalid) { - return; //No valid fix yet - } - if (vehicle_get_attr(n->vehicle->vehicle, attr_position_coord_geo,&geo_attr,NULL)!=1) { + //Check that we aren't calculating too fast + if (vehicle_get_attr(n->vehicle->vehicle, attr_position_time_iso8601,&iso8601_attr,NULL)==1) { + currTs=iso8601_to_secs(iso8601_attr.u.str); + dbg(lvl_debug,"currTs: %u:%u\n",currTs%86400/3600,((currTs%86400)%3600)/60); + } + dbg(lvl_debug,"prevTs: %u:%u\n",n->prevTs%86400/3600,((n->prevTs%86400)%3600)/60); + + if (n->auto_switch == FALSE) + return; + + if (currTs-(n->prevTs)<60) { + //We've have to wait a little + return; + } + + if (sscanf(iso8601_attr.u.str,"%d-%02d-%02dT",&year,&month,&day) != 3) + return; + if (vehicle_get_attr(n->vehicle->vehicle, attr_position_valid, &valid_attr,NULL) && valid_attr.u.num==attr_position_valid_invalid) { + return; //No valid fix yet + } + if (vehicle_get_attr(n->vehicle->vehicle, attr_position_coord_geo,&geo_attr,NULL)!=1) { //No position - no sun return; - } - //We calculate sunrise anyway, cause it is needed both for day and for night - if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) { - //near the pole sun never rises/sets, so we should never switch profiles - dbg(lvl_debug,"trise: %u:%u, sun never visible, never switch profile\n",HOURS(trise),MINUTES(trise)); - n->prevTs=currTs; - return; } - trise_actual=trise; - dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise)); - dbg(lvl_debug,"dayname = %s, name =%s \n",l->dayname, l->name); - if (HOURS(trise)*60+MINUTES(trise)<(currTs%86400)/60) { - after_sunrise = TRUE; - } - dbg(lvl_debug,"nightname = %s, name = %s \n",l->nightname, l->name); - if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) { - //near the pole sun never rises/sets, so we should never switch profiles - dbg(lvl_debug,"tset: %u:%u, sun always visible, never switch profile\n",HOURS(tset),MINUTES(tset)); - n->prevTs=currTs; - return; - } - dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset)); - if (((HOURS(tset)*60+MINUTES(tset)<(currTs%86400)/60)) || - ((HOURS(trise_actual)*60+MINUTES(trise_actual)>(currTs%86400)/60))) { - after_sunset = TRUE; - } - if (after_sunrise && !after_sunset && l->dayname) { - navit_set_layout_by_name(n,l->dayname); + //We calculate sunrise anyway, cause it is needed both for day and for night + if (__sunriset__(year,month,day,geo_attr.u.coord_geo->lng,geo_attr.u.coord_geo->lat,-5,1,&trise,&tset)!=0) { + dbg(lvl_debug,"near the pole sun never rises/sets, so we should never switch profiles\n"); + dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise)); + dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset)); + n->prevTs=currTs; + return; + } + trise_actual=trise; + dbg(lvl_debug,"trise: %u:%u\n",HOURS(trise),MINUTES(trise)); + dbg(lvl_debug,"tset: %u:%u\n",HOURS(tset),MINUTES(tset)); + dbg(lvl_debug,"dayname = %s, name =%s \n",l->dayname, l->name); + dbg(lvl_debug,"nightname = %s, name = %s \n",l->nightname, l->name); + if (HOURS(trise)*60+MINUTES(trise)<(currTs%86400)/60) { + after_sunrise = TRUE; + } + + if (((HOURS(tset)*60+MINUTES(tset)<(currTs%86400)/60)) || + ((HOURS(trise_actual)*60+MINUTES(trise_actual)>(currTs%86400)/60))) { + after_sunset = TRUE; + } + if (after_sunrise && !after_sunset && l->dayname) { + navit_set_layout_by_name(n,l->dayname); dbg(lvl_debug,"layout set to day\n"); - } - else if (after_sunset && l->nightname) { - navit_set_layout_by_name(n,l->nightname); - dbg(lvl_debug,"layout set to night\n"); - } - n->prevTs=currTs; + }else if (after_sunset && l->nightname) { + navit_set_layout_by_name(n,l->nightname); + dbg(lvl_debug,"layout set to night\n"); + } + n->prevTs=currTs; } } diff --git a/navit/navit.h b/navit/navit.h index e8cc29078..898ff6cff 100644 --- a/navit/navit.h +++ b/navit/navit.h @@ -117,6 +117,7 @@ struct navigation *navit_get_navigation(struct navit *this_); struct displaylist *navit_get_displaylist(struct navit *this_); void navit_layout_switch(struct navit *n); int navit_set_vehicle_by_name(struct navit *n, const char *name); +int navit_set_vehicleprofile_name(struct navit *this_, char *name); int navit_set_layout_by_name(struct navit *n, const char *name); void navit_disable_suspend(void); int navit_block(struct navit *this_, int block); diff --git a/navit/osd/Makefile.am b/navit/osd/Makefile.am deleted file mode 100644 index f14eff62d..000000000 --- a/navit/osd/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -SUBDIRS= -DIST_SUBDIRS=core - -if OSD_CORE - SUBDIRS+=core -endif diff --git a/navit/osd/core/Makefile.am b/navit/osd/core/Makefile.am deleted file mode 100644 index 10f17f8d2..000000000 --- a/navit/osd/core/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=osd_core -if PLUGINS - moduleosd_LTLIBRARIES = libosd_core.la -else - noinst_LTLIBRARIES = libosd_core.la -endif -libosd_core_la_SOURCES = osd_core.c -libosd_core_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ - diff --git a/navit/plugin/Makefile.am b/navit/plugin/Makefile.am deleted file mode 100644 index da51c76af..000000000 --- a/navit/plugin/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -SUBDIRS= -if PLUGIN_PEDESTRIAN - SUBDIRS += pedestrian -endif - -DIST_SUBDIRS=pedestrian diff --git a/navit/plugin/pedestrian/Makefile.am b/navit/plugin/pedestrian/Makefile.am deleted file mode 100644 index 9427f44d5..000000000 --- a/navit/plugin/pedestrian/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/navit -DMODULE=plugin_pedestrian -moduleplugin_LTLIBRARIES = libplugin_pedestrian.la -libplugin_pedestrian_la_LDFLAGS=-module -avoid-version @NAVIT_MODULE_LDFLAGS@ #-Wl,--no-undefined - -libplugin_pedestrian_la_SOURCES = pedestrian.c - -android: libplugin_pedestrian.la - cp .libs/libplugin_pedestrian.so ../../android/libs/armeabi -xslt: - cp *.xslt ../../xslt diff --git a/navit/speech/Makefile.am b/navit/speech/Makefile.am deleted file mode 100644 index 3c232db0b..000000000 --- a/navit/speech/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -SUBDIRS= -if SPEECH_ANDROID - SUBDIRS += android -endif -if SPEECH_CMDLINE - SUBDIRS += cmdline -endif -if SPEECH_DBUS - SUBDIRS += dbus -endif -if SPEECH_ESPEAK - SUBDIRS += espeak -endif -if SPEECH_SPEECH_DISPATCHER - SUBDIRS += speech_dispatcher -endif diff --git a/navit/speech/android/Makefile.am b/navit/speech/android/Makefile.am deleted file mode 100644 index c2a0dc350..000000000 --- a/navit/speech/android/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_android -if PLUGINS -modulespeech_LTLIBRARIES = libspeech_android.la -else -noinst_LTLIBRARIES = libspeech_android.la -endif -libspeech_android_la_SOURCES = speech_android.c -libspeech_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ - - -android: libspeech_android.la - mkdir -p ../../android/libs/armeabi/navit/speech - cp .libs/libspeech_android.so ../../android/libs/armeabi - -push: libspeech_android.la - adb push .libs/libspeech_android.so /data/data/org.navitproject.navit/lib diff --git a/navit/speech/cmdline/Makefile.am b/navit/speech/cmdline/Makefile.am deleted file mode 100644 index 4597bd934..000000000 --- a/navit/speech/cmdline/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_cmdline -if PLUGINS -modulespeech_LTLIBRARIES = libspeech_cmdline.la -else -noinst_LTLIBRARIES = libspeech_cmdline.la -endif -libspeech_cmdline_la_SOURCES = speech_cmdline.c -libspeech_cmdline_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/speech/dbus/Makefile.am b/navit/speech/dbus/Makefile.am deleted file mode 100644 index abe285b15..000000000 --- a/navit/speech/dbus/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_dbus -modulespeech_LTLIBRARIES = libspeech_dbus.la -libspeech_dbus_la_SOURCES = speech_dbus.c -libspeech_dbus_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/speech/espeak/Makefile.am b/navit/speech/espeak/Makefile.am deleted file mode 100644 index ecdb50324..000000000 --- a/navit/speech/espeak/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_espeak -if PLUGINS -modulespeech_LTLIBRARIES = libspeech_espeak.la -else -noinst_LTLIBRARIES = libspeech_espeak.la -endif -libspeech_espeak_la_SOURCES = speak.c -libspeech_espeak_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -L$(top_builddir)/navit/support/espeak -lsupport_espeak -if !SUPPORT_WIN32CE -libspeech_espeak_la_LDFLAGS += -Wl,-lwinmm -endif - diff --git a/navit/speech/speech_dispatcher/Makefile.am b/navit/speech/speech_dispatcher/Makefile.am deleted file mode 100644 index a040740ef..000000000 --- a/navit/speech/speech_dispatcher/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=speech_speech_dispatcher -modulespeech_LTLIBRARIES = libspeech_speech_dispatcher.la -libspeech_speech_dispatcher_la_SOURCES = speech_speech_dispatcher.c -libspeech_speech_dispatcher_la_LIBADD = @SPEECHD_LIBS@ -libspeech_speech_dispatcher_la_LDFLAGS = -module -avoid-version diff --git a/navit/support/Makefile.am b/navit/support/Makefile.am deleted file mode 100644 index 9f63840a1..000000000 --- a/navit/support/Makefile.am +++ /dev/null @@ -1,32 +0,0 @@ -SUBDIRS= -if SUPPORT_ESPEAK - SUBDIRS+=espeak -endif -if SUPPORT_EZXML - SUBDIRS+=ezxml -endif -if SUPPORT_GLIB - SUBDIRS+=glib -endif -if SUPPORT_WORDEXP - SUBDIRS+=wordexp -endif -if SUPPORT_WIN32 - SUBDIRS+=win32 -endif -if SUPPORT_ZLIB - SUBDIRS+=zlib -endif -if SUPPORT_LIBC - SUBDIRS+=libc -endif -if SUPPORT_LIBPNG - SUBDIRS+=libpng -endif -if SPEECH_ESPEAK - SUBDIRS+=espeak -endif -if !HAVE_SYSTEM_SHAPEFILELIB - SUBDIRS+=shapefile -endif -DIST_SUBDIRS=espeak ezxml glib wordexp win32 zlib libc libpng shapefile diff --git a/navit/support/espeak/Makefile.am b/navit/support/espeak/Makefile.am deleted file mode 100755 index 3de91b41f..000000000 --- a/navit/support/espeak/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -DMODULE=support_espeak -noinst_LTLIBRARIES = libsupport_espeak.la -libsupport_espeak_la_SOURCES = compiledict.c dictionary.c intonation.c \ - readclause.c setlengths.c numbers.c synth_mbrola.c \ - synthdata.c synthesize.c translate.c \ - tr_languages.c voices.c wavegen.c phonemelist.c klatt.c speak_init.c -libsupport_espeak_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ - -#bin_PROGRAMS = speak - -#speak_SOURCES = speak.c $(libsupport_espeak_la_SOURCES) - -nobase_pkgdata_DATA = espeak-data/af_dict espeak-data/ca_dict espeak-data/config espeak-data/cs_dict espeak-data/cy_dict -nobase_pkgdata_DATA += espeak-data/da_dict espeak-data/de_dict espeak-data/el_dict espeak-data/en_dict espeak-data/eo_dict -nobase_pkgdata_DATA += espeak-data/es_dict espeak-data/fi_dict espeak-data/fr_dict espeak-data/grc_dict espeak-data/hbs_dict -nobase_pkgdata_DATA += espeak-data/hi_dict espeak-data/hu_dict espeak-data/hy_dict espeak-data/id_dict espeak-data/is_dict -nobase_pkgdata_DATA += espeak-data/it_dict espeak-data/jbo_dict espeak-data/ku_dict espeak-data/la_dict espeak-data/lv_dict -nobase_pkgdata_DATA += espeak-data/mk_dict espeak-data/nl_dict espeak-data/no_dict -nobase_pkgdata_DATA += espeak-data/pap_dict espeak-data/phondata espeak-data/phondata-manifest espeak-data/phonindex -nobase_pkgdata_DATA += espeak-data/phontab espeak-data/pl_dict espeak-data/pt_dict espeak-data/ro_dict espeak-data/ru_dict -nobase_pkgdata_DATA += espeak-data/sk_dict espeak-data/sq_dict espeak-data/sv_dict espeak-data/sw_dict espeak-data/ta_dict -nobase_pkgdata_DATA += espeak-data/tr_dict espeak-data/vi_dict espeak-data/voices/!v/croak espeak-data/voices/!v/f1 -nobase_pkgdata_DATA += espeak-data/voices/!v/f2 espeak-data/voices/!v/f3 espeak-data/voices/!v/f4 espeak-data/voices/!v/fast -nobase_pkgdata_DATA += espeak-data/voices/!v/m1 espeak-data/voices/!v/m2 espeak-data/voices/!v/m3 espeak-data/voices/!v/m4 -nobase_pkgdata_DATA += espeak-data/voices/!v/m5 espeak-data/voices/!v/m6 espeak-data/voices/!v/m7 espeak-data/voices/!v/whisper -nobase_pkgdata_DATA += espeak-data/voices/af espeak-data/voices/bs espeak-data/voices/ca espeak-data/voices/cs -nobase_pkgdata_DATA += espeak-data/voices/cy espeak-data/voices/da espeak-data/voices/de espeak-data/voices/default -nobase_pkgdata_DATA += espeak-data/voices/el espeak-data/voices/en/en espeak-data/voices/en/en-n espeak-data/voices/en/en-rp -nobase_pkgdata_DATA += espeak-data/voices/en/en-sc espeak-data/voices/en/en-us espeak-data/voices/en/en-wi -nobase_pkgdata_DATA += espeak-data/voices/en/en-wm espeak-data/voices/eo espeak-data/voices/es espeak-data/voices/es-la -nobase_pkgdata_DATA += espeak-data/voices/fi espeak-data/voices/fr espeak-data/voices/fr-be espeak-data/voices/hi -nobase_pkgdata_DATA += espeak-data/voices/hr espeak-data/voices/hu espeak-data/voices/hy espeak-data/voices/hy-west -nobase_pkgdata_DATA += espeak-data/voices/id espeak-data/voices/is espeak-data/voices/it espeak-data/voices/ku -nobase_pkgdata_DATA += espeak-data/voices/la espeak-data/voices/lv -nobase_pkgdata_DATA += espeak-data/voices/mk espeak-data/voices/nl espeak-data/voices/no espeak-data/voices/pl -nobase_pkgdata_DATA += espeak-data/voices/pt espeak-data/voices/pt-pt espeak-data/voices/ro espeak-data/voices/ru -nobase_pkgdata_DATA += espeak-data/voices/sk espeak-data/voices/sq espeak-data/voices/sr espeak-data/voices/sv -nobase_pkgdata_DATA += espeak-data/voices/sw espeak-data/voices/ta espeak-data/voices/test/grc espeak-data/voices/test/jbo -nobase_pkgdata_DATA += espeak-data/voices/test/pap espeak-data/voices/tr espeak-data/voices/vi espeak-data/voices/zh -nobase_pkgdata_DATA += espeak-data/voices/zh-yue espeak-data/zh_dict espeak-data/zhy_dict - -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/af1_phtrans espeak-data/mbrola_ph/ca1_phtrans espeak-data/mbrola_ph/cr1_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/cs_phtrans espeak-data/mbrola_ph/de2_phtrans espeak-data/mbrola_ph/de4_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/de6_phtrans espeak-data/mbrola_ph/en1_phtrans espeak-data/mbrola_ph/es_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/fr1_phtrans espeak-data/mbrola_ph/gr2_phtrans espeak-data/mbrola_ph/grc-de6_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/hu1_phtrans espeak-data/mbrola_ph/id1_phtrans espeak-data/mbrola_ph/in1_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/it3_phtrans espeak-data/mbrola_ph/la1_phtrans espeak-data/mbrola_ph/nl_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/pl1_phtrans espeak-data/mbrola_ph/pt1_phtrans espeak-data/mbrola_ph/pt_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/ptbr4_phtrans espeak-data/mbrola_ph/ptbr_phtrans espeak-data/mbrola_ph/ro1_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/sv2_phtrans espeak-data/mbrola_ph/sv_phtrans espeak-data/mbrola_ph/us3_phtrans -#nobase_pkgdata_DATA += espeak-data/mbrola_ph/us_phtrans -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-af1 espeak-data/voices/mb/mb-af1-en -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-br1 espeak-data/voices/mb/mb-br3 espeak-data/voices/mb/mb-br4 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-cr1 espeak-data/voices/mb/mb-cz2 espeak-data/voices/mb/mb-de2 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de4 espeak-data/voices/mb/mb-de4-en espeak-data/voices/mb/mb-de5 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de5-en espeak-data/voices/mb/mb-de6 espeak-data/voices/mb/mb-de6-grc -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-de7 espeak-data/voices/mb/mb-en1 espeak-data/voices/mb/mb-es1 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-es2 espeak-data/voices/mb/mb-fr1 espeak-data/voices/mb/mb-fr1-en -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-fr4 espeak-data/voices/mb/mb-fr4-en espeak-data/voices/mb/mb-gr2 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-gr2-en espeak-data/voices/mb/mb-hu1 espeak-data/voices/mb/mb-hu1-en -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-id1 espeak-data/voices/mb/mb-it3 espeak-data/voices/mb/mb-it4 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-la1 espeak-data/voices/mb/mb-nl2 espeak-data/voices/mb/mb-nl2-en -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-pl1 espeak-data/voices/mb/mb-pl1-en espeak-data/voices/mb/mb-pt1 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-ro1 espeak-data/voices/mb/mb-ro1-en espeak-data/voices/mb/mb-sw1 -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-sw1-en espeak-data/voices/mb/mb-sw2 espeak-data/voices/mb/mb-sw2-en -#nobase_pkgdata_DATA += espeak-data/voices/mb/mb-us1 espeak-data/voices/mb/mb-us2 espeak-data/voices/mb/mb-us3 diff --git a/navit/support/ezxml/Makefile.am b/navit/support/ezxml/Makefile.am deleted file mode 100644 index 1b091a397..000000000 --- a/navit/support/ezxml/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_ezxml -DEZXML_NOMMAP -noinst_LTLIBRARIES = libsupport_ezxml.la -libsupport_ezxml_la_SOURCES = ezxml.c ezxml_init.c ezxml.h diff --git a/navit/support/gettext_intl/Makefile.in b/navit/support/gettext_intl/Makefile.in deleted file mode 100644 index 05f15329e..000000000 --- a/navit/support/gettext_intl/Makefile.in +++ /dev/null @@ -1,493 +0,0 @@ -# Makefile for directory with message catalog handling library of GNU gettext -# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU Library General Public License as published -# by the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program 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 -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -# USA. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = .. -VPATH = $(srcdir) - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -transform = @program_transform_name@ -libdir = @libdir@ -includedir = @includedir@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/intl -aliaspath = $(localedir) -subdir = intl - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) - -l = @INTL_LIBTOOL_SUFFIX_PREFIX@ - -AR = ar -CC = @CC@ -LIBTOOL = @LIBTOOL@ -RANLIB = @RANLIB@ -YACC = @INTLBISON@ -y -d -YFLAGS = --name-prefix=__gettext - -DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ --DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \ --DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ --Dset_relocation_prefix=libintl_set_relocation_prefix \ --Drelocate=libintl_relocate \ --DDEPENDS_ON_LIBICONV=1 @DEFS@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = \ - gmo.h \ - gettextP.h \ - hash-string.h \ - loadinfo.h \ - plural-exp.h \ - eval-plural.h \ - localcharset.h \ - relocatable.h \ - xsize.h \ - printf-args.h printf-args.c \ - printf-parse.h wprintf-parse.h printf-parse.c \ - vasnprintf.h vasnwprintf.h vasnprintf.c \ - os2compat.h \ - libgnuintl.h.in -SOURCES = \ - bindtextdom.c \ - dcgettext.c \ - dgettext.c \ - gettext.c \ - finddomain.c \ - loadmsgcat.c \ - localealias.c \ - textdomain.c \ - l10nflist.c \ - explodename.c \ - dcigettext.c \ - dcngettext.c \ - dngettext.c \ - ngettext.c \ - plural.y \ - plural-exp.c \ - localcharset.c \ - relocatable.c \ - localename.c \ - log.c \ - printf.c \ - osdep.c \ - os2compat.c \ - intl-compat.c -OBJECTS = \ - bindtextdom.$lo \ - dcgettext.$lo \ - dgettext.$lo \ - gettext.$lo \ - finddomain.$lo \ - loadmsgcat.$lo \ - localealias.$lo \ - textdomain.$lo \ - l10nflist.$lo \ - explodename.$lo \ - dcigettext.$lo \ - dcngettext.$lo \ - dngettext.$lo \ - ngettext.$lo \ - plural.$lo \ - plural-exp.$lo \ - localcharset.$lo \ - relocatable.$lo \ - localename.$lo \ - log.$lo \ - printf.$lo \ - osdep.$lo \ - intl-compat.$lo -DISTFILES.common = Makefile.in \ -config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) -DISTFILES.generated = plural.c -DISTFILES.normal = VERSION -DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \ -libgnuintl.h_vms Makefile.vms \ -libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc -DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ -COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h - -all: all-@USE_INCLUDED_LIBINTL@ -all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed -all-no: all-no-@BUILD_INCLUDED_LIBINTL@ -all-no-yes: libgnuintl.$la -all-no-no: - -libintl.a libgnuintl.a: $(OBJECTS) - rm -f $@ - $(AR) cru $@ $(OBJECTS) - $(RANLIB) $@ - -libintl.la libgnuintl.la: $(OBJECTS) - $(LIBTOOL) --mode=link \ - $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ - $(OBJECTS) @LTLIBICONV@ $(LIBS) -lc \ - -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ - -rpath $(libdir) \ - -no-undefined - -# Libtool's library version information for libintl. -# Before making a gettext release, the gettext maintainer must change this -# according to the libtool documentation, section "Library interface versions". -# Maintainers of other packages that include the intl directory must *not* -# change these values. -LTV_CURRENT=7 -LTV_REVISION=0 -LTV_AGE=4 - -.SUFFIXES: -.SUFFIXES: .c .y .o .lo .sin .sed - -.c.o: - $(COMPILE) $< - -.y.c: - $(YACC) $(YFLAGS) --output $@ $< - rm -f $*.h - -bindtextdom.lo: $(srcdir)/bindtextdom.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c -dcgettext.lo: $(srcdir)/dcgettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c -dgettext.lo: $(srcdir)/dgettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c -gettext.lo: $(srcdir)/gettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c -finddomain.lo: $(srcdir)/finddomain.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c -loadmsgcat.lo: $(srcdir)/loadmsgcat.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c -localealias.lo: $(srcdir)/localealias.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c -textdomain.lo: $(srcdir)/textdomain.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c -l10nflist.lo: $(srcdir)/l10nflist.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c -explodename.lo: $(srcdir)/explodename.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c -dcigettext.lo: $(srcdir)/dcigettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c -dcngettext.lo: $(srcdir)/dcngettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c -dngettext.lo: $(srcdir)/dngettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c -ngettext.lo: $(srcdir)/ngettext.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c -plural.lo: $(srcdir)/plural.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c -plural-exp.lo: $(srcdir)/plural-exp.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c -localcharset.lo: $(srcdir)/localcharset.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c -relocatable.lo: $(srcdir)/relocatable.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c -localename.lo: $(srcdir)/localename.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c -log.lo: $(srcdir)/log.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c -printf.lo: $(srcdir)/printf.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c -osdep.lo: $(srcdir)/osdep.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c -intl-compat.lo: $(srcdir)/intl-compat.c - $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c - -ref-add.sed: $(srcdir)/ref-add.sin - sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed - mv t-ref-add.sed ref-add.sed -ref-del.sed: $(srcdir)/ref-del.sin - sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed - mv t-ref-del.sed ref-del.sed - -INCLUDES = -I. -I$(srcdir) -I.. - -libgnuintl.h: $(srcdir)/libgnuintl.h.in - sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ - -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ - -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ - -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ - < $(srcdir)/libgnuintl.h.in > libgnuintl.h - -libintl.h: libgnuintl.h - cp libgnuintl.h libintl.h - -charset.alias: $(srcdir)/config.charset - $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ - mv t-$@ $@ - -check: all - -# We must not install the libintl.h/libintl.a files if we are on a -# system which has the GNU gettext() function in its C library or in a -# separate library. -# If you want to use the one which comes with this version of the -# package, you have to use `configure --with-included-gettext'. -install: install-exec install-data -install-exec: all - if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ - && test '@USE_INCLUDED_LIBINTL@' = yes; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ - $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ - $(LIBTOOL) --mode=install \ - $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ - if test "@RELOCATABLE@" = yes; then \ - dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ - if test -n "$$dependencies"; then \ - rm -f $(DESTDIR)$(libdir)/libintl.la; \ - fi; \ - fi; \ - else \ - : ; \ - fi - if test "$(PACKAGE)" = "gettext-tools" \ - && test '@USE_INCLUDED_LIBINTL@' = no; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir); \ - $(LIBTOOL) --mode=install \ - $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ - rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ - $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ - $(LIBTOOL) --mode=uninstall \ - rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ - else \ - : ; \ - fi - if test '@USE_INCLUDED_LIBINTL@' = yes; then \ - test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ - temp=$(DESTDIR)$(libdir)/t-charset.alias; \ - dest=$(DESTDIR)$(libdir)/charset.alias; \ - if test -f $(DESTDIR)$(libdir)/charset.alias; then \ - orig=$(DESTDIR)$(libdir)/charset.alias; \ - sed -f ref-add.sed $$orig > $$temp; \ - $(INSTALL_DATA) $$temp $$dest; \ - rm -f $$temp; \ - else \ - if test @GLIBC21@ = no; then \ - orig=charset.alias; \ - sed -f ref-add.sed $$orig > $$temp; \ - $(INSTALL_DATA) $$temp $$dest; \ - rm -f $$temp; \ - fi; \ - fi; \ - $(mkinstalldirs) $(DESTDIR)$(localedir); \ - test -f $(DESTDIR)$(localedir)/locale.alias \ - && orig=$(DESTDIR)$(localedir)/locale.alias \ - || orig=$(srcdir)/locale.alias; \ - temp=$(DESTDIR)$(localedir)/t-locale.alias; \ - dest=$(DESTDIR)$(localedir)/locale.alias; \ - sed -f ref-add.sed $$orig > $$temp; \ - $(INSTALL_DATA) $$temp $$dest; \ - rm -f $$temp; \ - else \ - : ; \ - fi -install-data: all - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ - $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ - dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ - for file in $$dists; do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ - dists="$(DISTFILES.generated)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - $(INSTALL_DATA) $$dir/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - dists="$(DISTFILES.obsolete)"; \ - for file in $$dists; do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - -install-strip: install - -installdirs: - if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ - && test '@USE_INCLUDED_LIBINTL@' = yes; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ - else \ - : ; \ - fi - if test "$(PACKAGE)" = "gettext-tools" \ - && test '@USE_INCLUDED_LIBINTL@' = no; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir); \ - else \ - : ; \ - fi - if test '@USE_INCLUDED_LIBINTL@' = yes; then \ - test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ - $(mkinstalldirs) $(DESTDIR)$(localedir); \ - else \ - : ; \ - fi - if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ - && test '@USE_INCLUDED_LIBINTL@' = yes; then \ - rm -f $(DESTDIR)$(includedir)/libintl.h; \ - $(LIBTOOL) --mode=uninstall \ - rm -f $(DESTDIR)$(libdir)/libintl.$la; \ - else \ - : ; \ - fi - if test "$(PACKAGE)" = "gettext-tools" \ - && test '@USE_INCLUDED_LIBINTL@' = no; then \ - rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ - else \ - : ; \ - fi - if test '@USE_INCLUDED_LIBINTL@' = yes; then \ - if test -f $(DESTDIR)$(libdir)/charset.alias; then \ - temp=$(DESTDIR)$(libdir)/t-charset.alias; \ - dest=$(DESTDIR)$(libdir)/charset.alias; \ - sed -f ref-del.sed $$dest > $$temp; \ - if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ - rm -f $$dest; \ - else \ - $(INSTALL_DATA) $$temp $$dest; \ - fi; \ - rm -f $$temp; \ - fi; \ - if test -f $(DESTDIR)$(localedir)/locale.alias; then \ - temp=$(DESTDIR)$(localedir)/t-locale.alias; \ - dest=$(DESTDIR)$(localedir)/locale.alias; \ - sed -f ref-del.sed $$dest > $$temp; \ - if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ - rm -f $$dest; \ - else \ - $(INSTALL_DATA) $$temp $$dest; \ - fi; \ - rm -f $$temp; \ - fi; \ - else \ - : ; \ - fi - if test "$(PACKAGE)" = "gettext-tools"; then \ - for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - -info dvi ps pdf html: - -$(OBJECTS): ../config.h libgnuintl.h -bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h -dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h -explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h -dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h -dcigettext.$lo: $(srcdir)/eval-plural.h -localcharset.$lo: $(srcdir)/localcharset.h -localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h -printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c - -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) - -ctags: CTAGS - -CTAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) - -id: ID - -ID: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) - - -mostlyclean: - rm -f *.a *.la *.o *.obj *.lo core core.* - rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed - rm -f -r .libs _libs - -clean: mostlyclean - -distclean: clean - rm -f Makefile ID TAGS - if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ - rm -f ChangeLog.inst $(DISTFILES.normal); \ - else \ - : ; \ - fi - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - - -# GNU gettext needs not contain the file `VERSION' but contains some -# other files which should not be distributed in other packages. -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: Makefile - if test "$(PACKAGE)" = "gettext-tools"; then \ - : ; \ - else \ - if test "$(PACKAGE)" = "gettext-runtime"; then \ - additional="$(DISTFILES.gettext)"; \ - else \ - additional="$(DISTFILES.normal)"; \ - fi; \ - $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ - for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done; \ - fi - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) && $(SHELL) ./config.status -# This would be more efficient, but doesn't work any more with autoconf-2.57, -# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. -# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/navit/support/glib/Makefile.am b/navit/support/glib/Makefile.am deleted file mode 100644 index c268053f1..000000000 --- a/navit/support/glib/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -I$(top_srcdir)/navit/support -DMODULE=support_glib -noinst_LTLIBRARIES = libsupport_glib.la -libsupport_glib_la_SOURCES = fake.c galiasdef.c gatomic.c gerror.c \ - ghash.c glib_init.c glist.c gmem.c gmessages.c gprimes.c gprintf.c gslice.c \ - gslist.c gstrfuncs.c gstring.c gutils.c gutf8.c \ - fake.h galias.h gerror.h ghash.h glib.h glibconfig.h glibintl.h glist.h \ - gmacros.h gmem.h gmessages.h gprintf.h gprintfint.h gquark.h gslice.h \ - gslist.h gstrfuncs.h gthreadprivate.h gtypes.h diff --git a/navit/support/libc/Makefile.am b/navit/support/libc/Makefile.am deleted file mode 100644 index fae600f8f..000000000 --- a/navit/support/libc/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_libc -noinst_LTLIBRARIES = libsupport_libc.la -libsupport_libc_la_SOURCES = libc.c libc_init.c -if SUPPORT_WIN32CE -noinst_LIBRARIES = libc.a -libc_a_SOURCES = -endif diff --git a/navit/support/libpng/Makefile.am b/navit/support/libpng/Makefile.am deleted file mode 100644 index e8ed41c1e..000000000 --- a/navit/support/libpng/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit @ZLIB_CFLAGS@ -DMODULE=support_libpng -noinst_LTLIBRARIES = libsupport_libpng.la -libsupport_libpng_la_SOURCES = png.c pngerror.c pngget.c pngmem.c pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c libpng_init.c - -#bin_PROGRAMS = pngm2pnm -#pngm2pnm_LDADD=libsupport_libpng.la @ZLIB_LIBS@ - diff --git a/navit/support/shapefile/Makefile.am b/navit/support/shapefile/Makefile.am deleted file mode 100644 index 3f5115ca1..000000000 --- a/navit/support/shapefile/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_shapefile -noinst_LTLIBRARIES = libsupport_shapefile.la -libsupport_shapefile_la_SOURCES = dbfopen.c shpopen.c shptree.c shapefil.h diff --git a/navit/support/win32/Makefile.am b/navit/support/win32/Makefile.am deleted file mode 100644 index aee4350cb..000000000 --- a/navit/support/win32/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_win32 -noinst_LTLIBRARIES = libsupport_win32.la -libsupport_win32_la_SOURCES = mmap.c win32_init.c sys/mman.h ConvertUTF.c ConvertUTF.h serial_io.c addwinsock.c - diff --git a/navit/support/wordexp/Makefile.am b/navit/support/wordexp/Makefile.am deleted file mode 100644 index 44d5ad272..000000000 --- a/navit/support/wordexp/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_wordexp -noinst_LTLIBRARIES = libsupport_wordexp.la -libsupport_wordexp_la_SOURCES = wordexp.c wordexp_init.c wordexp.h glob.c glob.h diff --git a/navit/support/zlib/Makefile.am b/navit/support/zlib/Makefile.am deleted file mode 100644 index a49fe3ca7..000000000 --- a/navit/support/zlib/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=support_zlib -noinst_LTLIBRARIES = libsupport_zlib.la -libsupport_zlib_la_SOURCES = adler32.c crc32.c crc32.h infback.c inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h zconf.h zlib.h zutil.c zutil.h zlib_init.c diff --git a/navit/tools/gpx2navit_txt/Makefile.am b/navit/tools/gpx2navit_txt/Makefile.am deleted file mode 100644 index 05f1ce1a0..000000000 --- a/navit/tools/gpx2navit_txt/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -SUBDIRS = src man - -EXTRA_DIST = gps2shp pinatest2.gpx debian develop - -debian-dist: - dpkg-buildpackage -rfakeroot -d -tc -us -uc - -CLEANFILES = \ - pinatest2_wpt.shx \ - pinatest2_wpt.shp \ - pinatest2_wpt.dbf \ - pinatest2_trk.shx \ - pinatest2_trk.shp \ - pinatest2_trk.dbf \ - pinatest2_rte.shx \ - pinatest2_rte.shp \ - pinatest2_rte.dbf \ - pinatest2_meta.txt - -GPX2SHP=src/gpx2shp -check: $(GPX2SHP) - $(GPX2SHP) || true - $(GPX2SHP) --version - $(GPX2SHP) -s pinatest2.gpx - $(GPX2SHP) -e pinatest2.gpx - $(GPX2SHP) -p pinatest2.gpx - $(GPX2SHP) -v pinatest2.gpx > /dev/null diff --git a/navit/tools/gpx2navit_txt/man/Makefile.am b/navit/tools/gpx2navit_txt/man/Makefile.am deleted file mode 100644 index 71f0f055d..000000000 --- a/navit/tools/gpx2navit_txt/man/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -man_MANS = gpx2navit_txt.1 -EXTRA_DIST = $(man_MANS) diff --git a/navit/tools/gpx2navit_txt/src/Makefile.am b/navit/tools/gpx2navit_txt/src/Makefile.am deleted file mode 100644 index 5cce6fa3c..000000000 --- a/navit/tools/gpx2navit_txt/src/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -bin_PROGRAMS = gpx2navit_txt - -gpx2navit_txt_SOURCES = \ - emess.h \ - geod_for.c \ - geod_inv.c \ - geod_set.c \ - geodesic.h \ - gpx2navit_txt.h \ - main.c \ - misc.c \ - utils.c \ - parser.c \ - elementControl.c\ - setwpt.c \ - setpath.c \ - setmeta.c \ - errorcode.h - -INCLUDES= -I$(srcdir) - -AM_CFLAGS = -g - -debian-dist: - dpkg-buildpackage -rfakeroot -d -tc -us -uc - diff --git a/navit/vehicle/Makefile.am b/navit/vehicle/Makefile.am deleted file mode 100644 index 80fc84db7..000000000 --- a/navit/vehicle/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -SUBDIRS= -if VEHICLE_MAEMO - SUBDIRS += maemo -endif -if VEHICLE_ANDROID - SUBDIRS += android -endif -if VEHICLE_IPHONE - SUBDIRS += iphone -endif -if VEHICLE_DEMO - SUBDIRS += demo -endif -if VEHICLE_FILE - SUBDIRS += file -endif -if VEHICLE_GPSD - SUBDIRS += gpsd -endif -if VEHICLE_GPSD_DBUS - SUBDIRS += gpsd_dbus -endif -if VEHICLE_GYPSY - SUBDIRS += gypsy -endif -if VEHICLE_NULL - SUBDIRS += null -endif -if VEHICLE_WINCE - SUBDIRS += wince -endif -if VEHICLE_WEBOS - SUBDIRS += webos -endif diff --git a/navit/vehicle/android/Makefile.am b/navit/vehicle/android/Makefile.am deleted file mode 100644 index 7f7799acb..000000000 --- a/navit/vehicle/android/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_android -modulevehicle_LTLIBRARIES = libvehicle_android.la -libvehicle_android_la_SOURCES = vehicle_android.c -libvehicle_android_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/vehicle/demo/Makefile.am b/navit/vehicle/demo/Makefile.am deleted file mode 100644 index 5662119d4..000000000 --- a/navit/vehicle/demo/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_demo -if PLUGINS -modulevehicle_LTLIBRARIES = libvehicle_demo.la -else -noinst_LTLIBRARIES = libvehicle_demo.la -endif -libvehicle_demo_la_SOURCES = vehicle_demo.c -libvehicle_demo_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/vehicle/file/Makefile.am b/navit/vehicle/file/Makefile.am deleted file mode 100644 index ce3a45b65..000000000 --- a/navit/vehicle/file/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -modulevehicle_LTLIBRARIES = libvehicle_file.la libvehicle_pipe.la libvehicle_socket.la libvehicle_serial.la -libvehicle_file_la_CFLAGS=-DMODULE=vehicle_file -libvehicle_file_la_SOURCES = vehicle_file.c -libvehicle_file_la_LDFLAGS = -module -avoid-version @NAVIT_SOCKET_LDFLAGS@ @NAVIT_MODULE_LDFLAGS@ -libvehicle_pipe_la_CFLAGS=-DMODULE=vehicle_pipe -libvehicle_pipe_la_SOURCES = vehicle_pipe.c -libvehicle_pipe_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -libvehicle_socket_la_CFLAGS=-DMODULE=vehicle_socket -libvehicle_socket_la_SOURCES = vehicle_socket.c -libvehicle_socket_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ -libvehicle_serial_la_CFLAGS=-DMODULE=vehicle_serial -libvehicle_serial_la_SOURCES = vehicle_serial.c -libvehicle_serial_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/vehicle/gpsd/Makefile.am b/navit/vehicle/gpsd/Makefile.am deleted file mode 100644 index 1c47ccc56..000000000 --- a/navit/vehicle/gpsd/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @GPSBT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gpsd -modulevehicle_LTLIBRARIES = libvehicle_gpsd.la -libvehicle_gpsd_la_SOURCES = vehicle_gpsd.c -libvehicle_gpsd_la_LIBADD = @GPSD_LIBS@ @GPSBT_LIBS@ -libvehicle_gpsd_la_LDFLAGS = -module -avoid-version diff --git a/navit/vehicle/gpsd_dbus/Makefile.am b/navit/vehicle/gpsd_dbus/Makefile.am deleted file mode 100644 index 4685d2ea8..000000000 --- a/navit/vehicle/gpsd_dbus/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gpsd_dbus -modulevehicle_LTLIBRARIES = libvehicle_gpsd_dbus.la -libvehicle_gpsd_dbus_la_SOURCES = vehicle_gpsd_dbus.c -libvehicle_gpsd_dbus_la_LIBADD = @DBUS_LIBS@ -libvehicle_gpsd_dbus_la_LDFLAGS = -module -avoid-version diff --git a/navit/vehicle/gypsy/Makefile.am b/navit/vehicle/gypsy/Makefile.am deleted file mode 100644 index 1e997f23c..000000000 --- a/navit/vehicle/gypsy/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @DBUS_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_gypsy -modulevehicle_LTLIBRARIES = libvehicle_gypsy.la -libvehicle_gypsy_la_SOURCES = vehicle_gypsy.c -libvehicle_gypsy_la_LIBADD = @GYPSY_LIBS@ -libvehicle_gypsy_la_LDFLAGS = -module -avoid-version diff --git a/navit/vehicle/iphone/Makefile.am b/navit/vehicle/iphone/Makefile.am deleted file mode 100644 index 7abb872f4..000000000 --- a/navit/vehicle/iphone/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_iphone -modulevehicle_LTLIBRARIES = libvehicle_iphone.la -libvehicle_iphone_la_SOURCES = vehicle_iphone.c corelocation.m -libvehicle_iphone_la_LDFLAGS = -module -Wl,-framework,CoreLocation -libvehicle_iphone_la_LIBADD = @IPHONE_LIBS@ diff --git a/navit/vehicle/maemo/Makefile.am b/navit/vehicle/maemo/Makefile.am deleted file mode 100644 index d82bdb699..000000000 --- a/navit/vehicle/maemo/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @LIBLOCATION_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_maemo -modulevehicle_LTLIBRARIES = libvehicle_maemo.la -libvehicle_maemo_la_SOURCES = vehicle_maemo.c -libvehicle_maemo_la_LIBADD = @LIBLOCATION_LIBS@ -libvehicle_maemo_la_LDFLAGS = -module -avoid-version diff --git a/navit/vehicle/null/Makefile.am b/navit/vehicle/null/Makefile.am deleted file mode 100644 index 83387eb27..000000000 --- a/navit/vehicle/null/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_null -if PLUGINS - modulevehicle_LTLIBRARIES = libvehicle_null.la -else - noinst_LTLIBRARIES = libvehicle_null.la -endif -libvehicle_null_la_SOURCES = vehicle_null.c -libvehicle_null_la_LDFLAGS = -module -avoid-version @NAVIT_MODULE_LDFLAGS@ diff --git a/navit/vehicle/qt5/CMakeLists.txt b/navit/vehicle/qt5/CMakeLists.txt new file mode 100644 index 000000000..411d9d6ee --- /dev/null +++ b/navit/vehicle/qt5/CMakeLists.txt @@ -0,0 +1,6 @@ +# Find includes in corresponding build directories +set(CMAKE_INCLUDE_CURRENT_DIR ON) +# Instruct CMake to run moc automatically when needed. +set(CMAKE_AUTOMOC ON) + +module_add_library(vehicle_qt5 vehicle_qt5.cpp) diff --git a/navit/vehicle/qt5/vehicle_qt5.cpp b/navit/vehicle/qt5/vehicle_qt5.cpp new file mode 100644 index 000000000..d6d33d7ab --- /dev/null +++ b/navit/vehicle/qt5/vehicle_qt5.cpp @@ -0,0 +1,300 @@ +/** @file vehicle_null.c + * @brief null uses dbus signals + * + * Navit, a modular navigation system. + * Copyright (C) 2005-2008 Navit Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * @Author Tim Niemeyer <reddog@mastersword.de> + * @date 2008-2009 + */ + +#include "vehicle_qt5.h" +#include "vehicle_qt5.moc" +#include <QDateTime> +QNavitGeoReceiver::QNavitGeoReceiver (QObject * parent, struct vehicle_priv * c):QObject(parent) +{ + priv = c; + if(priv->source != NULL) + { + connect(priv->source, SIGNAL(positionUpdated(QGeoPositionInfo)),this, SLOT(positionUpdated(QGeoPositionInfo))); + } + if(priv->satellites != NULL) + { + connect(priv->satellites, SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &)), this, SLOT(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &))); + connect(priv->satellites, SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &)), this, SLOT(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &))); + } +} +void QNavitGeoReceiver::satellitesInUseUpdated(const QList<QGeoSatelliteInfo> & sats) +{ + dbg(lvl_debug, "Sats in use: %d\n", sats.count()); + priv->sats_used = sats.count(); + callback_list_call_attr_0(priv->cbl, attr_position_sats_used); +} + +void QNavitGeoReceiver::satellitesInViewUpdated(const QList<QGeoSatelliteInfo> & sats) +{ + dbg(lvl_debug, "Sats in view: %d\n", sats.count()); + priv->sats = sats.count(); + callback_list_call_attr_0(priv->cbl, attr_position_qual); +} + +void QNavitGeoReceiver::positionUpdated(const QGeoPositionInfo &info) +{ + + /* ignore stale view */ + if(info.coordinate().isValid()) + { + if(info.timestamp().toUTC().secsTo(QDateTime::currentDateTimeUtc()) > 20) + { + dbg(lvl_debug,"Ignoring old FIX\n"); + return; + } + } + + if(info.hasAttribute(QGeoPositionInfo::HorizontalAccuracy)) + { + dbg(lvl_debug,"Horizontal acc (%f)\n",info.attribute(QGeoPositionInfo::HorizontalAccuracy)); + priv->radius = info.attribute(QGeoPositionInfo::HorizontalAccuracy); + callback_list_call_attr_0(priv->cbl, attr_position_radius); + } + if(info.hasAttribute(QGeoPositionInfo::GroundSpeed)) + { + dbg(lvl_debug,"Got ground speed (%f)\n",info.attribute(QGeoPositionInfo::GroundSpeed)); + priv->speed = info.attribute(QGeoPositionInfo::GroundSpeed) * 3.6; + callback_list_call_attr_0(priv->cbl, attr_position_speed); + } + if(info.hasAttribute(QGeoPositionInfo::Direction)) + { + dbg(lvl_debug,"Direction (%f)\n",info.attribute(QGeoPositionInfo::Direction)); + priv->direction = info.attribute(QGeoPositionInfo::Direction); + callback_list_call_attr_0(priv->cbl, attr_position_direction); + } + + switch(info.coordinate().type()) + { + case QGeoCoordinate::Coordinate3D: + priv->fix_type = 2; + break; + case QGeoCoordinate::Coordinate2D: + priv->fix_type = 1; + break; + case QGeoCoordinate::InvalidCoordinate: + priv->fix_type = 0; + break; + } + + + if(info.coordinate().isValid()) + { + dbg(lvl_debug, "Got valid coordinate (lat %f, lon %f)\n", info.coordinate().latitude(), info.coordinate().longitude()); + priv->geo.lat = info.coordinate().latitude(); + priv->geo.lng = info.coordinate().longitude(); + priv->have_coords = 1; + if(info.coordinate().type() == QGeoCoordinate::Coordinate3D) + { + dbg(lvl_debug,"Got valid altitude (alt %f)\n", info.coordinate().altitude()); + priv->height = info.coordinate().altitude(); + } + //dbg(lvl_debug, "Time %s\n", info.timestamp().toUTC().toString().toLatin1().data()); + priv->fix_time = info.timestamp().toUTC().toTime_t(); + callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); + } + else + { + dbg(lvl_debug, "Got invalid coordinate\n"); + priv->have_coords = 0; + callback_list_call_attr_0(priv->cbl, attr_position_coord_geo); + } +} + + +/** + * @brief Free the null_vehicle + * + * @param priv + * @returns nothing + */ +static void +vehicle_qt5_destroy(struct vehicle_priv *priv) +{ + dbg(lvl_debug,"enter\n"); + if(priv->receiver != NULL) + delete priv->receiver; + if(priv->source != NULL) + delete priv->source; + g_free(priv); +} + +/** + * @brief Provide the outside with information + * + * @param priv + * @param type TODO: What can this be? + * @param attr + * @returns true/false + */ +static int +vehicle_qt5_position_attr_get(struct vehicle_priv *priv, + enum attr_type type, struct attr *attr) +{ + struct attr * active=NULL; + dbg(lvl_debug,"enter %s\n",attr_to_name(type)); + switch (type) { + case attr_position_valid: + attr->u.num = priv->have_coords; + break; + case attr_position_fix_type: + attr->u.num = priv->fix_type; + break; + case attr_position_height: + attr->u.numd = &priv->height; + break; + case attr_position_speed: + attr->u.numd = &priv->speed; + break; + case attr_position_direction: + attr->u.numd = &priv->direction; + break; + case attr_position_radius: + attr->u.numd = &priv->radius; + break; + case attr_position_qual: + attr->u.num = priv->sats; + break; + case attr_position_sats_used: + attr->u.num = priv->sats_used; + break; + case attr_position_coord_geo: + attr->u.coord_geo = &priv->geo; + if (!priv->have_coords) + return 0; + break; + case attr_position_time_iso8601: + if (priv->fix_time) { + struct tm tm; + if (gmtime_r(&priv->fix_time, &tm)) { + strftime(priv->fixiso8601, sizeof(priv->fixiso8601), + "%Y-%m-%dT%TZ", &tm); + attr->u.str=priv->fixiso8601; + } + else { + priv->fix_time = 0; + return 0; + } + //dbg(lvl_debug,"Fix Time: %s\n", priv->fixiso8601); + } + else { + //dbg(lvl_debug,"Fix Time: 0\n"); + return 0; + } + break; + + case attr_active: + active = attr_search(priv->attrs,NULL,attr_active); + if(active != NULL) { + attr->u.num=active->u.num; + return 1; + } else + return 0; + break; + + default: + return 0; + } + dbg(lvl_debug,"ok\n"); + attr->type = type; + return 1; +} + +static int +vehicle_qt5_set_attr(struct vehicle_priv *priv, struct attr *attr) +{ + switch (attr->type) { + case attr_position_speed: + priv->speed=*attr->u.numd; + break; + case attr_position_direction: + priv->direction=*attr->u.numd; + break; + case attr_position_coord_geo: + priv->geo=*attr->u.coord_geo; + priv->have_coords=1; + break; + default: + break; + } + callback_list_call_attr_0(priv->cbl, attr->type); + return 1; +} + + +struct vehicle_methods vehicle_null_methods = { + vehicle_qt5_destroy, + vehicle_qt5_position_attr_get, + vehicle_qt5_set_attr, +}; + +/** + * @brief Create null_vehicle + * + * @param meth + * @param cbl + * @param attrs + * @returns vehicle_priv + */ +static struct vehicle_priv * +vehicle_qt5_new_qt5(struct vehicle_methods *meth, + struct callback_list *cbl, + struct attr **attrs) +{ + struct vehicle_priv *ret; + + dbg(lvl_debug, "enter\n"); + ret = g_new0(struct vehicle_priv, 1); + ret->cbl = cbl; + *meth = vehicle_null_methods; + ret->attrs = attrs; + ret->source = QGeoPositionInfoSource::createDefaultSource(NULL); + ret->satellites = QGeoSatelliteInfoSource::createDefaultSource(NULL); + if(ret->source == NULL) + { + dbg(lvl_error, "Got NO QGeoPositionInfoSource\n"); + } + else + { + dbg(lvl_debug, "Using %s\n", ret->source->sourceName().toLatin1().data()); + ret->receiver = new QNavitGeoReceiver(NULL,ret); + ret->satellites->setUpdateInterval(1000); + ret->satellites->startUpdates(); + ret->source->setUpdateInterval(500); + ret->source->startUpdates(); + } + dbg(lvl_debug, "return\n"); + return ret; +} + +/** + * @brief register vehicle_null + * + * @returns nothing + */ +void +plugin_init(void) +{ + dbg(lvl_debug, "enter\n"); + plugin_register_category_vehicle("qt5", vehicle_qt5_new_qt5); +} diff --git a/navit/vehicle/qt5/vehicle_qt5.h b/navit/vehicle/qt5/vehicle_qt5.h new file mode 100644 index 000000000..c38c45284 --- /dev/null +++ b/navit/vehicle/qt5/vehicle_qt5.h @@ -0,0 +1,58 @@ +#ifndef __vehicle_qt5_h +#define __vehicle_qt5_h + +#include <config.h> +#include <string.h> +#include <glib.h> +#include <math.h> +#include <time.h> +#include "debug.h" +#include "plugin.h" +#include "coord.h" +#include "item.h" +#include "vehicle.h" + +#include <QObject> +#include <QStringList> +#include <QGeoPositionInfoSource> +#include <QGeoSatelliteInfoSource> + +#include "callback.h" + +#include <QObject> + +class QNavitGeoReceiver; +struct vehicle_priv { + struct callback_list *cbl; + struct coord_geo geo; + double speed; + double direction; + double height; + double radius; + int fix_type; + time_t fix_time; + char fixiso8601[128]; + int sats; + int sats_used; + int have_coords; + struct attr ** attrs; + + QGeoPositionInfoSource *source; + QGeoSatelliteInfoSource *satellites; + QNavitGeoReceiver * receiver; +}; + +class QNavitGeoReceiver : public QObject +{ + Q_OBJECT +public: + QNavitGeoReceiver (QObject * parent, struct vehicle_priv * c); +public slots: + void positionUpdated(const QGeoPositionInfo &info); + void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> & satellites); + void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> & satellites); + +private: + struct vehicle_priv * priv; +}; +#endif
\ No newline at end of file diff --git a/navit/vehicle/webos/Makefile.am b/navit/vehicle/webos/Makefile.am deleted file mode 100644 index 15f8767fc..000000000 --- a/navit/vehicle/webos/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ @SDL_CFLAGS@ @LIBPDL_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_webos -modulevehicle_LTLIBRARIES = libvehicle_webos.la -libvehicle_webos_la_SOURCES = vehicle_webos.c bluetooth.c cJSON.c -libvehicle_webos_la_LDFLAGS = @SDL_LIBS@ @LIBPDL_LIBS@ -module -avoid-version diff --git a/navit/vehicle/wince/Makefile.am b/navit/vehicle/wince/Makefile.am deleted file mode 100644 index af6fcb19d..000000000 --- a/navit/vehicle/wince/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -include $(top_srcdir)/Makefile.inc -AM_CPPFLAGS = @NAVIT_CFLAGS@ -I$(top_srcdir)/navit -DMODULE=vehicle_wince -if PLUGINS -modulevehicle_LTLIBRARIES = libvehicle_wince.la -else -noinst_LTLIBRARIES = libvehicle_wince.la -endif -libvehicle_wince_la_SOURCES = vehicle_wince.c -libvehicle_wince_la_LDFLAGS = -module -avoid-version diff --git a/navit/xpm/CMakeLists.txt b/navit/xpm/CMakeLists.txt index a2ce9e4b4..c9153839a 100644 --- a/navit/xpm/CMakeLists.txt +++ b/navit/xpm/CMakeLists.txt @@ -66,9 +66,14 @@ macro(add_scale_targets IMAGE_SRC IMAGE_NAME) endforeach() endmacro() -install(FILES desktop_icons/navit.desktop DESTINATION share/applications) -install(FILES desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps) -install(FILES desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps) +if(NOT DEFINED NAVIT_BINARY) + set(NAVIT_BINARY navit CACHE STRING "Navit binary name not defined") +endif() +#patch binary name in desktop file +configure_file(desktop_icons/navit.desktop.in desktop_icons/${PACKAGE}.desktop) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/desktop_icons/${PACKAGE}.desktop DESTINATION share/applications) +install(FILES desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps RENAME ${PACKAGE}.png) +install(FILES desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps RENAME ${PACKAGE}.png) #install(FILES bench.xpm DESTINATION ) if (USE_SVG OR SVG2PNG) diff --git a/navit/xpm/Makefile.am b/navit/xpm/Makefile.am deleted file mode 100644 index 40b7cc851..000000000 --- a/navit/xpm/Makefile.am +++ /dev/null @@ -1,341 +0,0 @@ -include $(top_srcdir)/Makefile.inc - -image_DATA = cemetery.xpm -image_DATA += dumping_station.xpm -image_DATA += highway_exit.xpm -image_DATA += hunting_stand.xpm -image_DATA += level_crossing.xpm -image_DATA += tower.xpm -image_DATA += trailerpark.xpm -image_DATA += public_office.xpm - - -## Obsolete. Should be removed eventually... - -image_DATA += biergarten.xpm -image_DATA += bus_halt.xpm -image_DATA += car_dealer.xpm -image_DATA += castle.xpm -image_DATA += library.xpm -image_DATA += memorial.xpm -image_DATA += picnic.xpm -image_DATA += potable_water.xpm -image_DATA += restroom.xpm -image_DATA += sport.xpm -image_DATA += menu.xpm -image_DATA += toggle_fullscreen.xpm - -## Obsolete end - - -image_DATA += flag_bk_tr.xpm -image_DATA += flag_bk_wh.xpm -image_DATA += flag_bl_wh.xpm -image_DATA += flag_wh_bk.xpm - -image_DATA += gc_tradi.xpm -image_DATA += gc_multi.xpm -image_DATA += gc_mystery.xpm -image_DATA += gc_event.xpm -image_DATA += gc_reference.xpm -image_DATA += gc_webcam.xpm -image_DATA += gc_question.xpm -image_DATA += gc_stages.xpm - -image_DATA += nav_left_1.xpm -image_DATA += nav_left_2.xpm -image_DATA += nav_right_1.xpm -image_DATA += nav_right_2.xpm -image_DATA += nav_straight.xpm -image_DATA += nav_straight_32.xpm -image_DATA += nav_left_1_32.xpm -image_DATA += nav_left_2_32.xpm -image_DATA += nav_right_1_32.xpm -image_DATA += nav_right_2_32.xpm - -svgs = gui_about.svg -svgs += gui_actions.svg -svgs += gui_active.svg -svgs += gui_android_menu.svg -svgs += gui_bookmark.svg -svgs += gui_formerdests.svg -svgs += gui_display.svg -svgs += gui_help.svg -svgs += gui_home.svg -svgs += gui_inactive.svg -svgs += gui_map.svg -svgs += gui_maps.svg -svgs += gui_rules.svg -svgs += gui_settings.svg -svgs += gui_sound.svg -svgs += gui_sound_off.svg -svgs += gui_tools.svg -svgs += gui_fullscreen.svg -svgs += gui_leave_fullscreen.svg -svgs += gui_quit.svg -svgs += gui_stop.svg -svgs += gui_town.svg -svgs += gui_vehicle.svg -svgs += gui_vehicle_pedestrian.svg -svgs += gui_zoom_in.svg -svgs += gui_zoom_out.svg -svgs += zoom_in.svg -svgs += zoom_out.svg -svgs += gui_select_street.svg -svgs += gui_select_town.svg -svgs += gui_select_country.svg -svgs += gui_arrow_left.svg -svgs += gui_arrow_right.svg -svgs += gui_arrow_up.svg -svgs += gui_arrow_down.svg -svgs += gui_menu.svg -svgs += gui_strength_0.svg -svgs += gui_strength_1.svg -svgs += gui_strength_2.svg -svgs += gui_strength_3.svg -svgs += gui_strength_4.svg -svgs += gui_strength_5.svg -svgs += gui_minus.svg -svgs += gui_plus.svg -svgs += gui_log.svg -svgs += gui_search.svg -svgs += menu.svg -svgs += toggle_fullscreen.svg - -svgs += airport.svg -svgs += atm.svg -svgs += attraction.svg -svgs += bahai.svg -svgs += bank.svg -svgs += bar.svg -svgs += beer.svg -svgs += bench.svg -svgs += bicycle_parking.svg -svgs += bicycle_rental.svg -svgs += bicycle_shop.svg -svgs += biergarten.svg -svgs += boat_ramp.svg -svgs += boundary_stone.svg -svgs += buddhist.svg -svgs += bus.svg -svgs += bus_stop.svg -svgs += cafe.svg -svgs += camping.svg -svgs += car_dealer.svg -svgs += car_rent.svg -svgs += car_sharing.svg -svgs += casino.svg -svgs += castle.svg -svgs += church.svg -svgs += cinema.svg -svgs += cursor.svg -svgs += cursor225.svg -svgs += cursor450.svg -svgs += cursor675.svg -svgs += cursor_still.svg -svgs += dam.svg -svgs += danger.svg -svgs += daymark.svg -svgs += drinking_water.svg -svgs += emergency.svg -svgs += exit.svg -svgs += fastfood.svg -svgs += firebrigade.svg -svgs += fountain.svg -svgs += fuel.svg -svgs += golf.svg -svgs += heliport.svg -svgs += hindu.svg -svgs += hospital.svg -svgs += hotel.svg -svgs += information.svg -svgs += islamic.svg -svgs += jain.svg -svgs += jewish.svg -svgs += justice.svg -svgs += library.svg -svgs += mark.svg -svgs += memorial.svg -svgs += menu.svg -svgs += military.svg -svgs += mini_roundabout.svg -svgs += museum.svg -svgs += pagan.svg -svgs += parking.svg -svgs += pastafarian.svg -svgs += peak.svg -svgs += pharmacy.svg -svgs += picnic.svg -svgs += police.svg -svgs += post.svg -svgs += rail_station.svg -svgs += repair_service.svg -svgs += resort.svg -svgs += restaurant.svg -svgs += ruins.svg -svgs += school.svg -svgs += shelter.svg -svgs += shinto.svg -svgs += shop_apparel.svg -svgs += shop_computer.svg -svgs += shop_department.svg -svgs += shop_grocery.svg -svgs += shopping.svg -svgs += sikh.svg -svgs += skiing.svg -svgs += sport.svg -svgs += stadium.svg -svgs += status_calculating_bk.svg -svgs += status_calculating_wh.svg -svgs += status_no_destination_bk.svg -svgs += status_no_destination_wh.svg -svgs += status_no_route_bk.svg -svgs += status_no_route_wh.svg -svgs += status_position_wait_bk.svg -svgs += status_position_wait_wh.svg -svgs += status_recalculating_bk.svg -svgs += status_recalculating_wh.svg -svgs += status_routing_bk.svg -svgs += status_routing_wh.svg -svgs += swimming.svg -svgs += taoist.svg -svgs += taxi.svg -svgs += tec_common.svg -svgs += telephone.svg -svgs += theater.svg -svgs += toggle_fullscreen.svg -svgs += toilets.svg -svgs += townhall.svg -svgs += traffic_signals.svg -svgs += unknown.svg -svgs += viewpoint.svg -svgs += wifi.svg -svgs += worship.svg -svgs += zoo.svg -svgs += zoom_in.svg -svgs += zoom_out.svg - - -nav_svgs = nav_left_1_bk.svg nav_left_1_wh.svg nav_left_2_bk.svg nav_left_2_wh.svg nav_left_3_bk.svg nav_left_3_wh.svg -nav_svgs += nav_right_1_bk.svg nav_right_1_wh.svg nav_right_2_bk.svg nav_right_2_wh.svg nav_right_3_bk.svg nav_right_3_wh.svg -nav_svgs += nav_roundabout_l1_bk.svg nav_roundabout_l1_wh.svg nav_roundabout_l2_bk.svg nav_roundabout_l2_wh.svg -nav_svgs += nav_roundabout_l3_bk.svg nav_roundabout_l3_wh.svg nav_roundabout_l4_bk.svg nav_roundabout_l4_wh.svg -nav_svgs += nav_roundabout_l5_bk.svg nav_roundabout_l5_wh.svg nav_roundabout_l6_bk.svg nav_roundabout_l6_wh.svg -nav_svgs += nav_roundabout_l7_bk.svg nav_roundabout_l7_wh.svg nav_roundabout_l8_bk.svg nav_roundabout_l8_wh.svg -nav_svgs += nav_roundabout_r1_bk.svg nav_roundabout_r1_wh.svg nav_roundabout_r2_bk.svg nav_roundabout_r2_wh.svg -nav_svgs += nav_roundabout_r3_bk.svg nav_roundabout_r3_wh.svg nav_roundabout_r4_bk.svg nav_roundabout_r4_wh.svg -nav_svgs += nav_roundabout_r5_bk.svg nav_roundabout_r5_wh.svg nav_roundabout_r6_bk.svg nav_roundabout_r6_wh.svg -nav_svgs += nav_roundabout_r7_bk.svg nav_roundabout_r7_wh.svg nav_roundabout_r8_bk.svg nav_roundabout_r8_wh.svg -nav_svgs += nav_straight_bk.svg nav_straight_wh.svg nav_turnaround_left_bk.svg nav_turnaround_left_wh.svg -nav_svgs += nav_turnaround_right_bk.svg nav_turnaround_right_wh.svg nav_destination_bk.svg nav_destination_wh.svg - -flag_svgs = country_.svgz country_AD.svgz country_AE.svgz country_AF.svgz country_AG.svgz country_AI.svgz country_AL.svgz country_AM.svgz -flag_svgs += country_AN.svgz country_AO.svgz country_AQ.svgz country_AR.svgz country_AS.svgz country_AT.svgz country_AU.svgz country_AW.svgz -flag_svgs += country_AX.svgz country_AZ.svgz country_BA.svgz country_BB.svgz country_BD.svgz country_BE.svgz country_BF.svgz -flag_svgs += country_BG.svgz country_BH.svgz country_BI.svgz country_BJ.svgz country_BL.svgz country_BM.svgz country_BN.svgz -flag_svgs += country_BO.svgz country_BR.svgz country_BS.svgz country_BT.svgz country_BV.svgz country_BW.svgz country_BY.svgz -flag_svgs += country_BZ.svgz country_CA.svgz country_CC.svgz country_CD.svgz country_CF.svgz country_CG.svgz country_CH.svgz -flag_svgs += country_CI.svgz country_CK.svgz country_CL.svgz country_CM.svgz country_CN.svgz country_CO.svgz country_CR.svgz -flag_svgs += country_CU.svgz country_CV.svgz country_CX.svgz country_CY.svgz country_CZ.svgz country_DE.svgz country_DJ.svgz -flag_svgs += country_DK.svgz country_DM.svgz country_DO.svgz country_DZ.svgz country_EC.svgz country_EE.svgz country_EG.svgz -flag_svgs += country_EH.svgz country_ER.svgz country_ES.svgz country_ET.svgz country_FI.svgz country_FJ.svgz country_FK.svgz -flag_svgs += country_FM.svgz country_FO.svgz country_FR.svgz country_GA.svgz country_GB.svgz country_GD.svgz country_GE.svgz -flag_svgs += country_GF.svgz country_GG.svgz country_GH.svgz country_GI.svgz country_GL.svgz country_GM.svgz country_GN.svgz -flag_svgs += country_GP.svgz country_GQ.svgz country_GR.svgz country_GS.svgz country_GT.svgz country_GU.svgz country_GW.svgz -flag_svgs += country_GY.svgz country_HK.svgz country_HM.svgz country_HN.svgz country_HR.svgz country_HT.svgz country_HU.svgz -flag_svgs += country_ID.svgz country_IE.svgz country_IL.svgz country_IM.svgz country_IN.svgz country_IO.svgz country_IQ.svgz -flag_svgs += country_IR.svgz country_IS.svgz country_IT.svgz country_JE.svgz country_JM.svgz country_JO.svgz country_JP.svgz -flag_svgs += country_KE.svgz country_KG.svgz country_KH.svgz country_KI.svgz country_KM.svgz country_KN.svgz country_KP.svgz -flag_svgs += country_KR.svgz country_KW.svgz country_KY.svgz country_KZ.svgz country_LA.svgz country_LB.svgz country_LC.svgz -flag_svgs += country_LI.svgz country_LK.svgz country_LR.svgz country_LS.svgz country_LT.svgz country_LU.svgz country_LV.svgz -flag_svgs += country_LY.svgz country_MA.svgz country_MC.svgz country_MD.svgz country_ME.svgz country_MF.svgz country_MG.svgz -flag_svgs += country_MH.svgz country_MK.svgz country_ML.svgz country_MM.svgz country_MN.svgz country_MO.svgz country_MP.svgz -flag_svgs += country_MQ.svgz country_MR.svgz country_MS.svgz country_MT.svgz country_MU.svgz country_MV.svgz country_MW.svgz -flag_svgs += country_MX.svgz country_MY.svgz country_MZ.svgz country_NA.svgz country_NC.svgz country_NE.svgz country_NF.svgz -flag_svgs += country_NG.svgz country_NI.svgz country_NL.svgz country_NO.svgz country_NP.svgz country_NR.svgz country_NU.svgz -flag_svgs += country_NZ.svgz country_OM.svgz country_PA.svgz country_PE.svgz country_PF.svgz country_PG.svgz country_PH.svgz -flag_svgs += country_PK.svgz country_PL.svgz country_PM.svgz country_PN.svgz country_PR.svgz country_PS.svgz country_PT.svgz -flag_svgs += country_PW.svgz country_PY.svgz country_QA.svgz country_RE.svgz country_RO.svgz country_RS.svgz country_RU.svgz -flag_svgs += country_RW.svgz country_SA.svgz country_SB.svgz country_SC.svgz country_SD.svgz country_SE.svgz country_SG.svgz -flag_svgs += country_SH.svgz country_SI.svgz country_SJ.svgz country_SK.svgz country_SL.svgz country_SM.svgz country_SN.svgz -flag_svgs += country_SO.svgz country_SR.svgz country_ST.svgz country_SV.svgz country_SY.svgz country_SZ.svgz country_TC.svgz -flag_svgs += country_TD.svgz country_TF.svgz country_TG.svgz country_TH.svgz country_TJ.svgz country_TK.svgz country_TL.svgz -flag_svgs += country_TM.svgz country_TN.svgz country_TO.svgz country_TR.svgz country_TT.svgz country_TV.svgz country_TW.svgz -flag_svgs += country_TZ.svgz country_UA.svgz country_UG.svgz country_UM.svgz country_US.svgz country_UY.svgz country_UZ.svgz -flag_svgs += country_VA.svgz country_VC.svgz country_VE.svgz country_VG.svgz country_VI.svgz country_VN.svgz country_VU.svgz -flag_svgs += country_WF.svgz country_WS.svgz country_YE.svgz country_YT.svgz country_ZA.svgz country_ZM.svgz country_ZW.svgz - -if USE_SVG - image_DATA += $(svgs) $(nav_svgs) $(flag_svgs) -endif - -if USE_SVG2PNG -# Implicit rules for generating the PNG files. This only generates the -# standard size; for additional sizes see below. -%.png: $(srcdir)/%.svg - SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$@" -%.png: $(srcdir)/%.svgz - SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$@" - -pngs = $(addsuffix .png,$(basename $(svgs))) -xsize = $(word 1,$(subst x, ,$(scale))) -ysize = $(word $(words $(scale)),$(subst x, ,$(scale))) -comma =, - -# template to generate scaling rules for the various PNG sizes -define scaling_rule_template -%_$(1)_$(1).png: $(srcdir)/%.$(2) - SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$$@" -endef - -# template to generate scaling rules for the default PNG size -define scaling_rule_template_def -$(basename $(1)).png: $(srcdir)/$(1) - SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) $(srcdir)/navit_svg2png "@SVG2PNG@" "$$@" "$(2)" "$(2)" -endef - - -# png images of the user interface and other, sizes e.g. "8,16,32,48,96" -if USE_SVG2PNG_SCALES -pngs += $(foreach scale, $(subst $(comma), ,@SVG2PNG_SCALES@), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(svgs)))) -# create rules from template -$(foreach extension,svg svgz, $(foreach size, $(subst $(comma), ,@SVG2PNG_SCALES@),$(eval $(call scaling_rule_template,$(size),$(extension))))) -endif - -# png state flags -if USE_SVG2PNG_SCALES_FLAG -svg2png_scales_flag = $(subst $(comma), ,@SVG2PNG_SCALES_FLAG@) -pngs += $(addsuffix .png,$(basename $(flag_svgs))) -pngs += $(foreach scale, $(wordlist 2,100,$(svg2png_scales_flag)), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(flag_svgs)))) -# create rules from templates -$(foreach extension,svg svgz, $(foreach size, $(wordlist 2,100,$(svg2png_scales_flag)),$(eval $(call scaling_rule_template,$(size),$(extension))))) -$(foreach img,$(flag_svgs), $(foreach size, $(firstword $(svg2png_scales_flag)),$(eval $(call scaling_rule_template_def,$(img),$(size))))) -endif - -# png symbols for navigation -if USE_SVG2PNG_SCALES_NAV -pngs += $(foreach scale, $(subst $(comma), ,@SVG2PNG_SCALES_NAV@), $(addsuffix _$(xsize)_$(ysize).png,$(basename $(nav_svgs)))) -# create rules from template -$(foreach extension,svg svgz, $(foreach size, $(subst $(comma), ,@SVG2PNG_SCALES_NAV@),$(eval $(call scaling_rule_template,$(size),$(extension))))) -endif - -image_DATA += $(pngs) -endif - -if !SUPPORT_WIN32 - DESKTOPFILEdir=$(datadir)/applications - DESKTOPFILE_DATA = desktop_icons/navit.desktop - - ICON128dir=$(datadir)/icons/hicolor/128x128/apps - ICON128_DATA = desktop_icons/128x128/navit.png - - ICON22dir=$(datadir)/icons/hicolor/22x22/apps - ICON22_DATA = desktop_icons/22x22/navit.png -endif - -EXTRA_DIST = $(image_DATA) $(DESKTOPFILE_DATA) $(ICON128_DATA) $(ICON22_DATA) navit_svg2png - -if USE_SVG2PNG -clean: - rm -f $(pngs) -endif diff --git a/navit/xpm/desktop_icons/navit.desktop b/navit/xpm/desktop_icons/navit.desktop.in index ff66f8aeb..81486b7c6 100644 --- a/navit/xpm/desktop_icons/navit.desktop +++ b/navit/xpm/desktop_icons/navit.desktop.in @@ -6,11 +6,12 @@ Name[fr]=Navit Comment=The open source vector based navigation program with routing engine Comment[de]=Ein vektorbasiertes Navigationsprogramm Comment[fr]=Le logiciel opensource de navigation vectorielle -Exec=navit -Icon=navit +Exec=@NAVIT_BINARY@ +Icon=@PACKAGE@ StartupNotify=true Terminal=false Type=Application Categories=GTK;Utility;Geography; GenericName=Navit GenericName[de]=Navit +X-Nemo-Application-Type=no-invoker diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index de83bb52b..1967005b4 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -84,7 +84,7 @@ foreach (LANG ${LANGUAGES}) COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo" "${PROJECT_BINARY_DIR}/locale/${LANG}/LC_MESSAGES/navit.mo" ) SET(MOFILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo ${MOFILES}) - INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo DESTINATION ${LOCALE_DIR}/${LANG}/LC_MESSAGES RENAME navit.mo) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo DESTINATION ${LOCALE_DIR}/${LANG}/LC_MESSAGES RENAME ${PACKAGE}.mo) endforeach(LANG ${LANGUAGES}) add_custom_target(locales ALL DEPENDS ${MOFILES}) diff --git a/po/Makefile.am b/po/Makefile.am deleted file mode 100644 index 15d8b7b93..000000000 --- a/po/Makefile.am +++ /dev/null @@ -1,112 +0,0 @@ -CATALOGS = @MOFILES@ - -CLEANFILES = $(CATALOGS) navit.pot - -# keep this sorted -EXTRA_DIST = @POIFILES@ \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDialogs.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitGraphics.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/Navit.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitMapDownloader.java \ - $(top_srcdir)/navit/android/res/values/strings.xml - -POTFILES = \ - $(top_srcdir)/navit/main.c \ - $(top_srcdir)/navit/navigation.c \ - $(top_srcdir)/navit/navit.c \ - $(top_srcdir)/navit/popup.c \ - $(top_srcdir)/navit/country.c \ - $(top_srcdir)/navit/gui/gtk/destination.c \ - $(top_srcdir)/navit/gui/gtk/gui_gtk_action.c \ - $(top_srcdir)/navit/gui/gtk/gui_gtk_poi.c \ - $(top_srcdir)/navit/gui/gtk/gui_gtk_statusbar.c \ - $(top_srcdir)/navit/gui/internal/gui_internal.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_bookmark.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_command.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_html.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_menu.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_poi.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_search.c \ - $(top_srcdir)/navit/gui/internal/gui_internal_widget.c \ - $(top_srcdir)/navit/osd/core/osd_core.c \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDialogs.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitGraphics.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/Navit.java \ - $(top_srcdir)/navit/android/src/org/navitproject/navit/NavitMapDownloader.java \ - $(top_builddir)/navit/navit_shipped.c \ - $(top_builddir)/navit/strings.c - -if XGETTEXT_GLADE -POTFILES += $(top_builddir)/navit/navit_shipped.glade -endif - - -SUFFIXES = .po .mo - -.po.mo: - dir=`basename $@ .mo` ;\ - $(MSGFMT) --check --verbose --statistics --output-file=$@ $< && \ - mkdir -p ../locale/$$dir/LC_MESSAGES && \ - cp $@ ../locale/$$dir/LC_MESSAGES/navit.mo - -all: @MOFILES@ - -# Trick gettext to get translateable strings out of navit_shipped.xml - -$(top_builddir)/navit/navit_shipped.glade: $(top_srcdir)/navit/navit_shipped.xml - sed -e "s/vehicleprofile/atkaction/" -e "s/name=/description=/" -e 's/<!\[CDATA\[//' -e 's/\]\]//' <$(top_srcdir)/navit/navit_shipped.xml >$(top_builddir)/navit/navit_shipped.glade - -$(top_builddir)/navit/navit_shipped.c: $(top_srcdir)/navit/navit_shipped.xml - sed -e 's/|//g' -e 's/^/|/' -e 's/$$/|/' -e 's/\(_("[^"]*")\)/| \1; |/g' -e 's/|[^|]*|//g' <$(top_srcdir)/navit/navit_shipped.xml >$(top_builddir)/navit/navit_shipped.c - -# Trick gettext to get translateable strings out of android/strings.xml - -$(top_builddir)/navit/strings.c: $(top_srcdir)/navit/android/res/values/strings.xml - sed -e "s/\\\\'/'/g" -e 's%.*<string[^>]*name="\(.*\)">\(.*\)</string>%// Android resource: @strings/\1\n_("\2")%g' -e '\%^//%!d'<$(top_srcdir)/navit/android/res/values/strings.xml >$(top_builddir)/navit/strings.c - -@POFILES@: navit.pot - sed 's/^"Project-Id-Version:.*/"Project-Id-Version: $(PACKAGE_STRING)\\n"/' < $(top_srcdir)/po/$@.in | $(MSGMERGE) --no-fuzzy-matching --verbose -o $(top_builddir)/po/$@ - navit.pot - -navit.pot: $(POTFILES) - $(XGETTEXT) --no-location --default-domain=navit \ - --add-comments --keyword=_ --keyword=_n --keyword=navit_nls_gettext --keyword=navit_nls_ngettext:1,2 $(POTFILES) - if cmp -s navit.po navit.pot; then \ - rm -f navit.po; \ - else \ - mv -f navit.po navit.pot; \ - fi - -install-data-local: $(CATALOGS) - $(mkinstalldirs) $(DESTDIR)$(datadir)/locale - chmod 755 $(DESTDIR)$(datadir)/locale - for n in $(CATALOGS) __DuMmY ; do \ - if test "$$n" -a "$$n" != "__DuMmY" ; then \ - l=`basename $$n .mo`; \ - $(mkinstalldirs) $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES; \ - chmod 755 $(DESTDIR)$(datadir)/locale/$$l; \ - chmod 755 $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES; \ - $(INSTALL_DATA) -m 644 $$n $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES/navit.mo; \ - fi; \ - done - -uninstall-local: - for n in $(CATALOGS) __DuMmY ; do \ - if test "$$n" -a "$$n" != "__DuMmY" ; then \ - l=`basename $$n .mo`; \ - rm -f $(DESTDIR)$(datadir)/locale/$$l/LC_MESSAGES/navit.mo; \ - fi; \ - done - -distclean-local: - rm -f $(top_builddir)/navit/navit_shipped.glade $(top_builddir)/navit/navit_shipped.c $(top_builddir)/navit/strings.c - for n in $(CATALOGS) __DuMmY ; do \ - if test "$$n" -a "$$n" != "__DuMmY" ; then \ - l=`basename $$n .mo`; \ - rm -f ../locale/$$l/LC_MESSAGES/navit.mo; \ - rm -f $$l.po; \ - fi; \ - done diff --git a/po/de.po.in b/po/de.po.in index 3ff969ec8..7ff0ba0e6 100644 --- a/po/de.po.in +++ b/po/de.po.in @@ -1,5 +1,5 @@ # German translations for navit -# Copyright (C) 2006-2016 The Navit Team +# Copyright (C) 2006-2017 The Navit Team # This file is distributed under the same license as the navit package. # Many thanks to the contributors of this translation: # Achim Behrens https://launchpad.net/~k1l @@ -26,6 +26,7 @@ # Roschkor https://launchpad.net/~bound-one2000 # S.E. https://launchpad.net/~stephan-evert # Stefan Sordon https://launchpad.net/~stefan-sordon +# Steffen https://launchpad.net/~zintor # Thuttle https://launchpad.net/~archibald-thuttle # Tobias Bannert https://launchpad.net/~toba # Usul https://launchpad.net/~usul1 @@ -40,8 +41,8 @@ msgid "" msgstr "" "Project-Id-Version: navit 0.5.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2016-08-25 22:29+0000\n" -"Last-Translator: Mathias Klein <ma_klein@gmx.de>\n" +"PO-Revision-Date: 2017-01-12 18:37+0000\n" +"Last-Translator: Steffen <zintor@lycos.com>\n" "Language-Team: Martin Schaller <martin-s@sourceforge.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2013,9 +2014,10 @@ msgstr "Höhenprofil" msgid "please install a map *.heightlines.bin to provide elevationdata" msgstr "" +"Bitte installiere eine Karte *.heightlines.bin, um Höhendaten bereitzustellen" msgid "The route must cross at least 2 heightlines" -msgstr "" +msgstr "Die Route muss mindestens zwei Höhenlinien kreuzen" msgid "Route Description" msgstr "Wegbeschreibung" @@ -2564,7 +2566,7 @@ msgid "Window Mode" msgstr "Fenstermodus" msgid "Layers" -msgstr "" +msgstr "Ebenen" msgid "Description" msgstr "Beschreibung" @@ -2820,6 +2822,16 @@ msgstr "" "derzeit angewählte Engine kann Ihre Sprache nicht wiedergeben. Soll das " "System den Voice-Download Dialog öffnen?" +#. Android resource: @strings/permissions_not_granted +msgid "" +"Navit needs permission to access GPS and read the map.\n" +"If you change your mind please restart Navit and grant the permissions" +msgstr "" + +#. Android resource: @strings/permissions_info_box_title +msgid "One or more ungranted permissions" +msgstr "" + #, c-format #~ msgid "then leave the roundabout at the %1$s %2$s" #~ msgstr "anschließend verlassen Sie den Kreisverkehr an der %1$s %2$s" |
